canvas与JS实现动态时钟动画

这次给大家带来canvas与js实现动态时钟动画,canvas与js实现动态时钟动画的注意事项有哪些,下面就是实战案例,一起来看一下。

先来看看运行效果:

QQ截图20180417170436.png

完整实例代码:

    canvas时钟      canvas {      border: 1px solid red;    }    function Clock(opt) {    for (var key in opt) {      this[key] = opt[key];    }    this.init();  }  Clock.prototype = {    init: function () {      var self = this;      var ctx = this.ctx;      this.timer = setInterval(function(){        ctx.clearRect(0,0,ctx.canvas.width,ctx.canvas.height);        self.drawDial();        self.drawDegreeScale();        self.drawNumber();        self.drawPointers();      },1000);    },    drawDial: function () {      var ctx = this.ctx;      ctx.save();      ctx.beginPath();      ctx.lineWidth = this.clockDialW;      ctx.strokeStyle = this.clockDialColor;      ctx.arc(this.clockX, this.clockY, this.clockRadius, 0, 2 * Math.PI);      ctx.stroke();      ctx.restore();    },    drawDegreeScale: function () {      var ctx = this.ctx;      var clockRadius = this.clockRadius;      var clockX = this.clockX;      var clockY = this.clockY;      var bigDegreeScaleL = this.bigDegreeScaleL;      var smallDegreeScale = this.smallDegreeScale;      var startX, startY, endX, endY, radian;      ctx.save();      for (var i = 0; i < 12; i++) {        radian = i * Math.PI / 6;        endX = clockX + clockRadius * Math.cos(radian);        endY = clockY + clockRadius * Math.sin(radian);        if (radian % (Math.PI / 2) == 0) {          startX = clockX + (clockRadius - bigDegreeScaleL) * Math.cos(radian);          startY = clockY + (clockRadius - bigDegreeScaleL) * Math.sin(radian);          ctx.lineWidth = this.bigDCWidth;        } else {          startX = clockX + (clockRadius - smallDegreeScale) * Math.cos(radian);          startY = clockY + (clockRadius - smallDegreeScale) * Math.sin(radian);          ctx.lineWidth = this.smallDCWidth;        }        ctx.beginPath();        ctx.moveTo(startX, startY);        ctx.lineTo(endX, endY);        ctx.stroke();        ctx.restore();      }    },    drawNumber: function () {      var ctx = this.ctx;      var textX, textY, textRadian;      var clockX = this.clockX;      var clockY = this.clockY;      var clockRadius = this.clockRadius;      ctx.font = '20px 微软雅黑';      ctx.fillStyle = 'red';      ctx.textAlign = 'center';      ctx.textBaseline = 'middle';      ctx.save();      for (var i = 0; i < 12; i++) {        textRadian = i * Math.PI / 6 - Math.PI/3;        textX = clockX + (clockRadius - 40) * Math.cos(textRadian);        textY = clockY + (clockRadius - 40) * Math.sin(textRadian);        ctx.beginPath();        ctx.fillText(i + 1, textX, textY);      }      ctx.restore();    },    drawPointers: function () {      var date = new Date();      var h = date.getHours();      var m = date.getMinutes();      var s = date.getSeconds();      h = h % 12;      var hRadian = 2 * Math.PI / 12 * h - Math.PI / 2;      this.drawPoint(hRadian,30,'red',8);      var mRadian = 2 * Math.PI / 60 * m - Math.PI / 2;      this.drawPoint(mRadian,50,'blue',6);      var sRadian = 2 * Math.PI / 60 * s - Math.PI / 2;      this.drawPoint(sRadian,70,'green',2);    },    drawPoint: function (radian, length,color,lineWidth) {      var x = this.clockX + Math.cos(radian) * length;      var y = this.clockY + Math.sin(radian) * length;      var ctx = this.ctx;      ctx.save();      ctx.beginPath();      ctx.strokeStyle = color;      ctx.lineWidth = lineWidth;      ctx.moveTo(this.clockX,this.clockY);      ctx.lineTo(x,y);      ctx.stroke();      ctx.restore();    }  };  var canvas = document.querySelector('canvas');  var ctx = canvas.getContext('2d');  var clock = new Clock({    ctx: this.ctx,    clockRadius: 150,    clockX: 300,    clockY: 300,    clockDialW: 6,    clockDialColor: 'blue',    bigDegreeScaleL: 20,    bigDCWidth: 6,    smallDegreeScale: 10,    smallDCWidth: 4  });

登录后复制

相信看了本文案例你已经掌握了方法,更多精彩请关注【创想鸟】其它相关文章!

推荐阅读:

优化页面加载速度插件InstantClick

预加载InstantClick使用详解

InstantClick怎么设置才能兼容MathJax与百度统计等

以上就是canvas与JS实现动态时钟动画的详细内容,更多请关注【创想鸟】其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至253000106@qq.com举报,一经查实,本站将立刻删除。

发布者:PHP中文网,转转请注明出处:https://www.chuangxiangniao.com/p/2771184.html

(0)
上一篇 2025年3月8日 12:51:42
下一篇 2025年3月8日 12:51:48

AD推荐 黄金广告位招租... 更多推荐

相关推荐

  • 用js实现汽车仪表盘

    这次给大家带来用js实现汽车仪表盘,用js实现汽车仪表盘的注意事项有哪些,下面就是实战案例,一起来看一下。 #test,#hehe{ width: 100%; height: 500px; } var myChart1; var optio…

    编程技术 2025年3月8日
    200
  • js实现字符限制中文汉字=两个字符

    这次给大家带来js实现字符限制中文汉字=两个字符,js实现字符限制中文汉字=两个字符的注意事项有哪些,下面就是实战案例,一起来看一下。 html 登录后复制 核心js代码 //字符串截取function getByteVal(val, ma…

    编程技术 2025年3月8日
    200
  • JS的递归实现方法

    这次给大家带来,的注意事项有哪些,下面就是实战案例,一起来看一下。 递归函数:递归函数是在通过名字调用自身的情况下构成的。 递归实现阶乘函数: 方法一:通过使用函数的名字 function factorial(num){ if(num&lt…

    编程技术 2025年3月8日
    200
  • JS+canvas绘制饼状统计图

    这次给大家带来JS+canvas绘制饼状统计图,JS+canvas绘制饼状统计图的注意事项有哪些,下面就是实战案例,一起来看一下。 完整代码: www.jb51.net canvas饼状图 var colors = (function ()…

    编程技术 2025年3月8日
    200
  • JS实现动态雪花飘落

    这次给大家带来JS实现动态雪花飘落,JS实现动态雪花飘落的注意事项有哪些,下面就是实战案例,一起来看一下。 飘雪 *{ margin:0; padding:0; font-family:”微软雅黑”; font-size:13px; col…

    编程技术 2025年3月8日
    200
  • JS二叉搜索树使用详解

    这次给大家带来JS二叉搜索树使用详解,JS二叉搜索树使用的注意事项有哪些,下面就是实战案例,一起来看一下。 什么是二叉树 二叉树就是树的每个节点最多只能有两个子节点 什么是二叉搜索树 二叉搜索树在二叉树的基础上,多了一个条件,就是二叉树在插…

    编程技术 2025年3月8日
    200
  • Node.js中如何操作mongodb数据库

    这次给大家带来Node.js中如何操作Node.js数据库,Node.js中操作mongodb数据库的Node.js有哪些,下面就是实战案例,一起来看一下。 如何利用mongoose将数据写入mongodb数据库? 1.利用npm下载安装m…

    编程技术 2025年3月8日
    200
  • JS实现路由跳转步奏详解

    这次给大家带来JS实现路由跳转步奏详解,JS实现路由跳转的注意事项有哪些,下面就是实战案例,一起来看一下。 JS的是使用对很多人来说是非常频繁的,同时js也有着非常强大的制作效果。这次文章就给大家介绍下使用js实现路由跳转效果示例代码,希望…

    编程技术 2025年3月8日
    200
  • js实现标签点击切换代码(附代码)

    这次给大家带来js实现标签点击切换代码(附代码) ,js实现标签点击切换代码的注意事项有哪些,下面就是实战案例,一起来看一下。 对于网站而言,相信很多人也非常清楚,网站里面很多的标签,每每点击之后就会切换了。那么大家知道这种效果是怎么实现的…

    编程技术 2025年3月8日
    200
  • JS制作九九乘法表的方法

    这次给大家带来JS制作九九乘法表的方法,JS制作九九乘法表的注意事项有哪些,下面就是实战案例,一起来看一下。 废话不多说了,直接给大家贴代码了,具体代码如下所示: 99乘法表 for (var i = 1; i <= 9; i++) …

    编程技术 2025年3月8日
    200

发表回复

登录后才能评论