温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

如何通过Canvas+JS实现简易的时钟

发布时间:2021-11-24 13:55:18 来源:亿速云 阅读:147 作者:柒染 栏目:编程语言

今天就跟大家聊聊有关如何通过Canvas+JS实现简易的时钟,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。

之前学习了下html5中的canvas元素,为了练练手就实现了一个简易的时钟。时钟本身并不复杂,也没有使用图片进行美化,不过麻雀虽小五脏俱全,下面就与大家分享一下:

实现效果:


如何通过Canvas+JS实现简易的时钟

html代码:

<!DOCTYPE html> <html> <head>     <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />     <title>Clock</title>     <style type="text/css">     *{         margin: 0;         padding: 0;     }     .canvas{         margin-left: 20px;         margin-top: 20px;         border: solid 1px;     }     </style> </head> <body onload= "main()">  <canvas class = "canvas" id="canvasId" width = '500px' height = '400px'></canvas>  <script type= "text/javascript" src = "Clock.js"></script> </body> </html>

JS代码:

var Canvas = {};  Canvas.cxt = document.getElementById('canvasId').getContext('2d');  Canvas.Point = function(x, y){     this.x = x;     this.y = y; };  /*擦除canvas上的所有图形*/ Canvas.clearCxt = function(){     var me = this;     var canvas = me.cxt.canvas;        me.cxt.clearRect(0,0, canvas.offsetWidth, canvas.offsetHeight); };  /*时钟*/ Canvas.Clock = function(){     var me = Canvas,         c = me.cxt,         radius = 150, /*半径*/         scale = 20, /*刻度长度*/         minangle = (1/30)*Math.PI, /*一分钟的弧度*/         hourangle = (1/6)*Math.PI, /*一小时的弧度*/         hourHandLength = radius/2, /*时针长度*/         minHandLength = radius/3*2, /*分针长度*/         secHandLength = radius/10*9, /*秒针长度*/         center = new me.Point(c.canvas.width/2, c.canvas.height/2); /*圆心*/         /*绘制圆心(表盘中心)*/     function drawCenter(){         c.save();          c.translate(center.x, center.y);           c.fillStyle = 'black';         c.beginPath();         c.arc(0, 0, radius/20, 0, 2*Math.PI);         c.closePath();         c.fill();         c.stroke();          c.restore();     };      /*通过坐标变换绘制表盘*/     function drawBackGround(){         c.save();          c.translate(center.x, center.y); /*平移变换*/         /*绘制刻度*/         function drawScale(){            c.moveTo(radius - scale, 0);            c.lineTo(radius, 0);          };          c.beginPath();         c.arc(0, 0, radius, 0, 2*Math.PI, true);         c.closePath();              for (var i = 1; i <= 12; i++) {            drawScale();            c.rotate(hourangle); /*旋转变换*/         };         /*绘制时间(3,6,9,12)*/         c.font = " bold 30px impack"         c.fillText("3", 110, 10);         c.fillText("6", -7, 120);         c.fillText("9", -120, 10);         c.fillText("12", -16, -100);         c.stroke();          c.restore();     };      /*绘制时针(h: 当前时(24小时制))*/     this.drawHourHand = function(h){          h = h === 0? 24: h;          c.save();         c.translate(center.x, center.y);          c.rotate(3/2*Math.PI);          c.rotate(h*hourangle);          c.beginPath();         c.moveTo(0, 0);         c.lineTo(hourHandLength, 0);         c.stroke();         c.restore();     };      /*绘制分针(m: 当前分)*/     this.drawMinHand = function(m){          m = m === 0? 60: m;          c.save();         c.translate(center.x, center.y);          c.rotate(3/2*Math.PI);          c.rotate(m*minangle);          c.beginPath();         c.moveTo(0, 0);         c.lineTo(minHandLength, 0);         c.stroke();         c.restore();     };      /*绘制秒针(s:当前秒)*/     this.drawSecHand = function(s){          s = s === 0? 60: s;          c.save();         c.translate(center.x, center.y);          c.rotate(3/2*Math.PI);          c.rotate(s*minangle);          c.beginPath();         c.moveTo(0, 0);         c.lineTo(secHandLength, 0);         c.stroke();         c.restore();     };      /*依据本机时间绘制时钟*/     this.drawClock = function(){         var me = this;           function draw(){            var date = new Date();             Canvas.clearCxt();             drawBackGround();            drawCenter();            me.drawHourHand(date.getHours() + date.getMinutes()/60);            me.drawMinHand(date.getMinutes() + date.getSeconds()/60);            me.drawSecHand(date.getSeconds());         }         draw();         setInterval(draw, 1000);     };   };   var main = function(){     var clock = new Canvas.Clock();     clock.drawClock(); };

代码中涉及到了一些简单的canvas元素API 大家google一下即可,

看完上述内容,你们对如何通过Canvas+JS实现简易的时钟有进一步的了解吗?如果还想了解更多知识或者相关内容,请关注亿速云行业资讯频道,感谢大家的支持。

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI