canvas之特丑时钟

感觉是不是特想送钟,老是编写些时钟的效果,今日就发个丑丑的时钟,老实说

有没有什么调试canvas的工具,老是要在浏览器刷新查看效果,好累啊~

(┬_┬)

代码:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Document</title>
    <style>
        body{
            background: #eee;
        }
        canvas{
            background: #fff;
        }
    </style>
</head>
<body>
    <canvas width="800" height="800">你浏览器不支持,请升级...</canvas>
    <audio id="audio" src="1.wav"></audio>
    <script>
        var oAudio=document.getElementById("audio");
        var oCas=document.getElementsByTagName("canvas")[0];
        var cas=oCas.getContext("2d");
        oAudio.ontimeupdate=function(){
            if(oAudio.currentTime>0.1){
                this.pause();
            }
        }
        /*渐变颜色*/
        var color=cas.createRadialGradient(400,400,10,400,400,200);
            color.addColorStop(0,"#f1f4f5");
            color.addColorStop(1,"#c5c6c7");
        setInterval(function(){
        oAudio.currentTime=0;
        oAudio.play();
        cas.clearRect(0,0,800,800);
        /*画圆框*/
        cas.lineWidth=3;
        cas.shadowColor="#888";
        cas.shadowOffsetX=1;
        cas.shadowOddsetY=1;
        cas.shadowBlur=5;
        cas.arc(400,400,200,0,Math.PI*2,false);
        cas.strokeStyle=color;
        cas.stroke(); 

        /*画圆内*/
        cas.fillStyle=color;
        cas.fill();

        /*画时刻*/
        drawTime();
        function drawTime(){
            var len=8;
            var len1=16;
            cas.strokeStyle="#7f7f7f";
            cas.shadowOffsetX=0;
            cas.shadowOddsetY=0;
            cas.shadowBlur=0;
            cas.beginPath();
            for(var i=0;i<60;i++){
                if(i%5==0){
                cas.moveTo(400+Math.cos(i*6*Math.PI/180)*200,400+Math.sin(i*6*Math.PI/180)*200);
                cas.lineTo(400+(200-len1)*Math.cos(i*6*Math.PI/180),400+(200-len1)*Math.sin(i*6*Math.PI/180));
                }else{
                cas.moveTo(400+Math.cos(i*6*Math.PI/180)*200,400+Math.sin(i*6*Math.PI/180)*200);
                cas.lineTo(400+(200-len)*Math.cos(i*6*Math.PI/180),400+(200-len)*Math.sin(i*6*Math.PI/180));
                }
            }
            cas.stroke();
        }

        /*画时针*/

        var date=new Date();
        var h=date.getHours();
        var m=date.getMinutes();
        var s=date.getSeconds();
            /*时针*/
        needle(h*5+5*m/60,100,"#579ec5");
        /*分针*/
        needle(m,130,"#5e717c");
        /*秒针*/
        needle(s,150,"#1d1e1e");

        /*圆的中心点*/
        cas.fillStyle="#858384";
        cas.beginPath();
        cas.arc(400,400,5,0,2*Math.PI,true);
        cas.shadowOffsetX=1;
        cas.shadowOddsetY=1;
        cas.shadowBlur=5;
        cas.fill();
        },1000);

        /*时针的函数*/
        function needle(t,len,color){
            var angle=Math.PI/180;
            cas.beginPath();
            cas.strokeStyle=color;
            cas.moveTo(400,400);
            cas.lineTo(400+len*Math.cos((t*6-90)*angle),400+len*Math.sin((t*6-90)*angle));
            cas.stroke();
        }

    </script>
</body>
</html>

这个钟重点不在怎么画,在三角函数,三角函数的使用与角度息息相关,Math.PI是π,Math.sin(),Math.cos()它们都是接受弧度的,所以要

把角度转换成弧度,在画钟前要先判断时钟的条件,把圆分成60份,每一份代表一个刻度,还有在圆的坐标是数学里的正方向为准的,所以

需要把开始坐标调一下,减个90度就可以和时钟的开始位置一样了。

在学canvas前一定要把以前遗忘的数学函数复习复习一下,不是一些复杂的算数就无法做了,canvas的学习就是坐标的不断确认的,然后连成线

最后画成图,这与数学里的点到线,线到面一样的道理。

上面的代码不难都是使用线条画的,就是重复的使用画线函数和填充颜色。噢~还有外加了一个声频标签使用,达到时钟的声音    滴答滴答滴答~

时间: 2024-10-27 16:43:36

canvas之特丑时钟的相关文章

WEB前端开发学习----9. 使用canvas来画个时钟

canvas元素在html5中的重要性非同一般.配合JS让我们实现了在浏览器页面中作画的强大功能.不再单单依靠图片,flash等外部文件,减少http请求,从而网页加载速度更加快捷. 简单的线段: 看个小演示  canvas小房子 不用函数累死人.... 旋转: 使用提供的rotate()方法.需要注意的是,在旋转前,应该重新定位原点.一般来说将要旋转的图像的端点重定向为原点,以此为基础来旋转.也就是说先定位,再设置旋转角度,最后画图.看个演示  canvas 扇子.这样要比一道一道的画线方便许

通过Canvas + JS 实现简易时钟实战

最近通过各种渠道学习了下html5中的canvas元素,为了练练手就随手写了一个简易的时钟.时钟本身不复杂,没有使用图片进行美化,下面就与大家分享一下具体的代码: 这是最终实现的效果: 部分的启发点来自于 http://developer.51cto.com/art/201503/467645.htm html代码: <!DOCTYPE html>     <html>     <head>         <meta http-equiv="Conte

Canvas画布实现自定义时钟效果

<!doctype html> <html> <head> <meta charset="utf-8"> <title>标题</title> <meta name="keywords" content=""> <meta name="description" content=""> <style> *

用canvas的arc绘制时钟

在页面上加入canvas标签: <body> <canvas id="c1" width="600px" height="600px"> <span>不支持canvas浏览器</span> </canvas> <!--默认:宽300 高150--> </body> js部分: 绘制秒的刻度的思路是先用oGC.stroke()循环画60个6°的扇形,将它们拼接成一整

用canvas绘制一个简易时钟

在见识了html5中canvas的强大,笔者准备制作一个简易时钟. 下面就是成果啦,制作之前我们先分析一下,绘制一个时钟需要做哪些准备. 一 . 1.首先这个时钟分为表盘,指针(时针,分针,秒针)和数字三部分. 2.表盘是个圆,这个简单. 3.绘制指针时,需要先获取到系统时间,然后找到时间和角度的关系. 4.然后利用画圆函数,把起始和终点设为同一角度,即可画出射线(指针).  二. 接下来,我们再分析一下,绘制时钟需要用到的函数. 1.arc(x, y, r, start, stop) x, y

canvas 画一个小时钟

<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <title>Title</title></head><body> <canvas id="mycanvas" height="1000" width="1000"></ca

canvas简单实现动态时钟

使用到的知识: 1.     获取系统时间 2.     画图形,空心图形,实心图形,以及一些属性 3.     for循环 准备工作:添加一块画布1000*1000(随意),引用canvas.js <!doctype html> <html>  <head>   <meta charset="UTF-8">   <meta name="Generator" content="EditPlus?&quo

利用canvas画一个动态时钟

目标:利用canvas画布画一个动态时钟,根据目前的时间可以实时更新的,可以在过程中添加一些效果,比如让时钟外围的一圈颜色渐变,时钟上的数字颜色改变,时钟的指针颜色改变... 设置一个定时器 先放上一张效果图,参考一下 先建一个画布,写好样式 <style type="text/css"> *{ margin: 0; padding: 0; } div{ //设置div的text-align为center,margin-top text-align: center; mar

canvas基础绘制-绚丽时钟

效果图: 与canvas基础绘制-绚丽倒计时的代码差异: // var endTime = new Date();//const声明变量,不可修改,必须声明时赋值: // endTime.setTime( endTime.getTime() + 3600*1000);//当前时间向后一小时: var curShowTimeSeconds = 0; function getCurrentShowTimeSeconds() { var curTime = new Date();//获取目前时间: /