怎么用HTML5的画布上实现一个炫酷时钟效果

  介绍

小编给大家分享一下怎么用HTML5的画布上实现一个炫酷时钟效果,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获、下面让我们一起去了解一下吧!

对于H5来说,画布可以说是它最有特色的一个地方了,有了它之后我们可以随意的在网页上画各种各样的图形,做一些小游戏啊什么的.canvas这个标签的用法,在网上也有特别多的教程了,这里就不作介绍了。今天我们就用油画来做一个小小的时钟。

那么首先在这个页面里面我使用了两个画布,一个用来绘制静态的时钟表盘和刻度,另一个用来绘制时钟的三个指针,然后用定位让他们重合到一起。然后这里没什么好说的,下面附上代码。

& lt; canvas  id=皃late"祝辞,,,   ,,,,,,,画表盘,,,   & lt;/canvas>,,,   & lt; canvas  id=皀eedles"祝辞,,,   ,,,,,,,画时针,,,   & lt;/canvas>

var 板=. getelementbyid(& # 39;板# 39;),,,,   var 针=. getelementbyid(& # 39;针# 39;),,,,   needles.setAttribute(& # 39;风格# 39;,& # 39;位置:绝对;:8 px;左:8 px; & # 39;);,,//这里因为chrome里面,身体的裕度值为8 px,所以我这里就没设为0了只,,   var  cntP=plate.getContext (& # 39; 2 d # 39;),,,,   var  cntH=needles.getContext (& # 39; 2 d # 39;),,,,   plate.width=800,,,,   plate.height=500,,,,   needles.width=800,,,,   needles.height=500;

到了这里准备工作就做完了、下面就准备绘制时钟了。我先定义了一个绘制时钟表盘的构造函数。

function  drawclock(问,半径、platelen、线宽、numLen numLen) {,,   ,,,,,,,,,,,this.cnt=问,,,,   ,,,,,,,,,,,this.radius=半径;,,,   ,,,,,,,,,,,this.platelen=platelen;,,,   ,,,,,,,,,,,this.linewidth=线宽;,,,   ,,,,,,,,,,,this.numLen=numLen;,,,   ,,,,,,,,,,,this.NUMLEN=NUMLEN;,,,   ,,,,,,,,,,,this.getCalibCoor=function (i) {,,,,   ,,,,,,,,,,,,,,,//获得表盘刻度两端的坐标,,,   ,,,,,,,,,,,,,,,var  X=200 + this.radius * sin(6 *我* Math.PI/180),,,,   ,,,,,,,,,,,,,,,var  Y=200 - this.radius * Math.cos(6 *我* Math.PI/180),,,,   ,,,,,,,,,,,,,,,var  x=200 + (this.radius-this.platelen) * sin(6 *我* Math.PI/180),,,,   ,,,,,,,,,,,,,,,var  y=200 - (this.radius-this.platelen) * Math.cos(6 *我* Math.PI/180),,,,   ,,   ,,,,,,,,,,,,,,,//,获得分钟数字的坐标,,,   ,,,,,,,,,,,,,,,var  numx=200 + (this.radius-this.platelen-this.numLen) * sin(6 *我* Math.PI/180),,,,   ,,,,,,,,,,,,,,,var  numy=200 - (this.radius-this.platelen-this.numLen) * Math.cos(6 *我* Math.PI/180),,,,   ,,,,,,,,,,,,,,,//获得小时数字的坐标,,,   ,,,,,,,,,,,,,,,var  numX=200 + (this.radius-this.platelen-this.NUMLEN) * sin(6 *我* Math.PI/180),,,,,,   ,,,,,,,,,,,,,,,var  numY=200 - (this.radius-this.platelen-this.NUMLEN) * Math.cos(6 *我* Math.PI/180),,,,   ,,,,,,,,,,,,,,,return  {X, X, Y, Y, X, X, Y, Y, numx: numx, numy: numy, numx: numx, numy: numy},,,,   ,,,,,,,,,,,},,,,   ,,,,,,,,,,,this.drawCalibration=function(){,//画刻度,,,   ,,,,,,,,,,,,,,,,(var 我=0,coorObj; i<60;我+ +){,,   ,,,,,,,,,,,,,,,,,,,coorObj=this.getCalibCoor (i),,,,   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null

怎么用HTML5的画布上实现一个炫酷时钟效果