旋转倒计时--canvas

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/sinat_35656188/article/details/80250531

一、HTML

<!DOCTYPE html>
<html>
    <head>
        <meta charset="UTF-8">
        <title></title>
    </head>
    <body>
        <canvas id="mycanvas"></canvas>
        <script type="text/javascript">
            var hb;
            var damiaojiaodu;
            var xiaomiaojiaodu=0;
            var dafenjiaodu;
            var dashijiaodu;
            var h,f,m;
            window.onload=function(){
                var mycanvas=document.getElementById("mycanvas");
                mycanvas.width=800;
                mycanvas.height=300;
                hb=mycanvas.getContext("2d");
                hb.fillStyle="gainsboro";
                hb.fillRect(0,0,800,300);
                //第一个
                //画扇形
//              hb.save();
//              hb.translate(150,150);
//              hb.beginPath();
//              hb.moveTo(0,0);
//              hb.arc(0,0,100,Math.PI/180*270,Math.PI/180*dajiaodu);
//              hb.fillStyle="indigo";
//              hb.fill();
                //画大圆
//              hb.beginPath();
//              hb.lineWidth=3;
//              hb.strokeStyle="white";
//              hb.arc(0,0,100,0,2*Math.PI);
//              hb.stroke();
                //画小圆
//              hb.beginPath();
//              hb.lineWidth=3;
//              hb.strokeStyle="white";
//              hb.arc(0,0,70,0,2*Math.PI);
//              hb.stroke();
                //画有填充的小圆
//              hb.beginPath();
//              hb.arc(0,0,69,0,2*Math.PI);
//              hb.fillStyle="gainsboro";
//              hb.fill();
                //再画扇形
//              hb.beginPath();
//              hb.moveTo(0,0);
//              hb.arc(0,0,69,Math.PI/180*270,Math.PI/180*xiaojiaodu);
//              hb.fillStyle="#A9A9A9";
//              hb.fill();
                //写字
//              hb.beginPath();
//              hb.fillStyle="indigo";
//              hb.font="50px 微软雅黑";
//              hb.fillText(daojishi>=10?:" "+daojishi,-30,15);
//              hb.restore();

                setInterval(function(){
                    hb.clearRect(0,0,800,300);
                    hb.fillStyle="gainsboro";
                    hb.fillRect(0,0,800,300);
                    var T=gettime();
                    drawxiaoshi(150,"indigo",T[0]);
                    drawfenzhong(400,"green",T[1]);
                    drawmiao(650,"red",T[2]);
                    damiaojiaodu=6*T[2]-90;
                    dafenjiaodu=T[1]*6-90+T[2]*0.1;
                    dashijiaodu=T[0]*30-90+0.5*T[1];
                    xiaomiaojiaodu+=18;
//                  console.log(xiaomiaojiaodu)
                    if(xiaomiaojiaodu>=630){
                        xiaomiaojiaodu=0;
                    }
                },50);
            };
            //秒
            function drawmiao(x,color,time){
                //画扇形
                hb.save();
                hb.translate(x,150);
                hb.beginPath();
                hb.moveTo(0,0);
                hb.arc(0,0,100,Math.PI/180*270,Math.PI/180*damiaojiaodu);
                hb.fillStyle=color;
                hb.fill();
                //画大圆
                hb.beginPath();
                hb.lineWidth=3;
                hb.strokeStyle="white";
                hb.arc(0,0,100,0,2*Math.PI);
                hb.stroke();
                //画小圆
                hb.beginPath();
                hb.lineWidth=3;
                hb.strokeStyle="white";
                hb.arc(0,0,70,0,2*Math.PI);
                hb.stroke();
                //画有填充的小圆
                hb.beginPath();
                hb.arc(0,0,69,0,2*Math.PI);
                hb.fillStyle="gainsboro";
                hb.fill();
                //再画扇形
                hb.beginPath();
                hb.moveTo(0,0);
                hb.arc(0,0,69,Math.PI/180*270,Math.PI/180*xiaomiaojiaodu);
                hb.fillStyle="#A9A9A9";
                hb.fill();
                //写字
                hb.beginPath();
                hb.fillStyle=color;
                hb.font="50px 微软雅黑";
                hb.fillText(time>=10?time:"0"+time,-30,15);
                hb.restore();
            }
            //分钟
            function drawfenzhong(x,color,time){
                //画扇形
                hb.save();
                hb.translate(x,150);
                hb.beginPath();
                hb.moveTo(0,0);
                hb.arc(0,0,100,Math.PI/180*270,Math.PI/180*dafenjiaodu);
                hb.fillStyle=color;
                hb.fill();
                //画大圆
                hb.beginPath();
                hb.lineWidth=3;
                hb.strokeStyle="white";
                hb.arc(0,0,100,0,2*Math.PI);
                hb.stroke();
                //画小圆
                hb.beginPath();
                hb.lineWidth=3;
                hb.strokeStyle="white";
                hb.arc(0,0,70,0,2*Math.PI);
                hb.stroke();
                //画有填充的小圆
                hb.beginPath();
                hb.arc(0,0,69,0,2*Math.PI);
                hb.fillStyle="gainsboro";
                hb.fill();
                //写字
                hb.beginPath();
                hb.fillStyle=color;
                hb.font="50px 微软雅黑";
                hb.fillText(time>=10?time:"0"+time,-30,15);
                hb.restore();
            }
            //小时
            function drawxiaoshi(x,color,time){
                //画扇形
                hb.save();
                hb.translate(x,150);
                hb.beginPath();
                hb.moveTo(0,0);
                hb.arc(0,0,100,Math.PI/180*270,Math.PI/180*dashijiaodu);
                hb.fillStyle=color;
                hb.fill();
                //画大圆
                hb.beginPath();
                hb.lineWidth=3;
                hb.strokeStyle="white";
                hb.arc(0,0,100,0,2*Math.PI);
                hb.stroke();
                //画小圆
                hb.beginPath();
                hb.lineWidth=3;
                hb.strokeStyle="white";
                hb.arc(0,0,70,0,2*Math.PI);
                hb.stroke();
                //画有填充的小圆
                hb.beginPath();
                hb.arc(0,0,69,0,2*Math.PI);
                hb.fillStyle="gainsboro";
                hb.fill();
                //写字
                hb.beginPath();
                hb.fillStyle=color;
                hb.font="50px 微软雅黑";
                hb.fillText(time>=10?time:"0"+time,-30,15);
                hb.restore();
            }
            function gettime(){
                var time=new Date();
                 h=time.getHours();
                 f=time.getMinutes();
                 m=time.getSeconds();
                return [h,f,m];
            }
        </script>

    </body>
</html>

二、效果图

这里写图片描述

猜你喜欢

转载自blog.csdn.net/sinat_35656188/article/details/80250531