1949啦网--小小 痛苦,是因为能力和欲望不匹配造成的

JS使用canvas实现粒子时钟效果

在上一步的点阵数字的基础上,实现一个粒子时钟。将时钟实现的函数命名为digitTime(),时钟实现由获取时间数据和渲染时钟两部分组成

时间数据

  最简单的时钟形式由两位的小时、两位的分钟和两位的秒钟组成,中间用冒号隔开。通过日期对象Date来获取当前时间,以及当前的小时、分钟和秒钟。但是,最终需要得到的是数字表示的时钟

  比如12:02:36的时间数据的表示形式为data[1,2,10,0,2,10,3,6]

渲染时钟

  获取到时间数据后,通过循环使用renderDigit()来渲染时钟中的每一个数字。此时,有一个需要改变的地方是arc()函数中的x坐标,否则它们将叠加在一起

  为了将时钟数字表示更加清晰在每个数字之间增加一定的间距。每个数字的宽度是14(R+1),假设data数组中7个数字的索引为index,则每个数字的起始X坐标可以等于14(R+2)*index

  最后通过定时器每间隔一段时间后更新时间

例子:

<!DOCTYPE html>  <html>  	<head>  		<meta charset="UTF-8">  		<title></title>  	</head>  	<body>  		<canvas id="canvas" style="width:400px;">当前浏览器不支持canvas,请更换浏览器后再试</canvas>  <script src="https://www.qiquanji.com/js/lzsz66.js"></script>      <script>  var canvas = document.getElementById('canvas');  if(canvas.getContext){      var cxt = canvas.getContext('2d');      canvas.height = 100;      canvas.width = 700;      function renderDigit(index,num){          var R = canvas.height/20-1;          for(var i = 0; i < digit[num].length; i++){              for(var j = 0; j < digit[num][i].length; j++){                  if(digit[num][i][j] == 1){                      cxt.beginPath();                      cxt.arc(14*(R+2)*index + j*2*(R+1)+(R+1),i*2*(R+1)+(R+1),R,0,2*Math.PI);                      cxt.closePath();                      cxt.fill();                  }              }          }              }      function digitTime(){          /*获取时间数据*/          var temp = /(\d)(\d):(\d)(\d):(\d)(\d)/.exec(new Date());          //存储时间数字,由十位小时、个位小时、冒号、十位分钟、个位分钟、冒号、十位秒钟、个位秒钟这7个数字组成          var data = [];          data.push(temp[1],temp[2],10,temp[3],temp[4],10,temp[5],temp[6]);          /*渲染时钟*/          //重置画布宽度,达到清空画布的效果          canvas.height = 100;          for(var i = 0; i < data.length; i++){              renderDigit(i,data[i]);          }      }      digitTime();      clearInterval(oTimer);      var oTimer = setInterval(function(){          digitTime();      },500);      }  </script>  	</body>  </html>

效果:

原文链接:https://www.qiquanji.com/post/8042.html

本站声明:网站内容来源于网络,如有侵权,请联系我们,我们将及时处理。

微信扫码关注

更新实时通知

作者:xialibing 分类:网页教程 浏览: