HTML5 canvas 实现小时钟
2014-03-15 19:48
162 查看
正在看HTML5的相关内容,这个是关于canvas应用的小程序
canvas画图很强大,就类似于自己用圆规直尺在画板上画图一样
写的时候参照了网上其他代码,比如擦除表针要上下左右多擦除两个像素
写完之后才发现自己定义的needle类里面的rect()没写好,代码重用率低了,如果还有什么其他问题,欢迎指出
不罗嗦,放代码
index.html:
Canvas.js:
最终效果:
canvas画图很强大,就类似于自己用圆规直尺在画板上画图一样
写的时候参照了网上其他代码,比如擦除表针要上下左右多擦除两个像素
写完之后才发现自己定义的needle类里面的rect()没写好,代码重用率低了,如果还有什么其他问题,欢迎指出
不罗嗦,放代码
index.html:
<!DOCTYPE HTML> <html> <head> <title> My canvas </title> </head> <body> <canvas id = "drawing" width = "400" height = "400"> Your browser doesn't support canvas! </canvas> <p id = "Date"></p> <script type="text/javascript" src="js/Canvas.js"></script> </body> </html>
Canvas.js:
var c = document.getElementById("drawing"); var date = document.getElementById("Date"); var clock={ pan : { panRect : function(cxt){ cxt.beginPath(); cxt.arc(0,0,100,0,2*Math.PI,true); cxt.stroke(); cxt.closePath(); }, numRect : function(cxt){ cxt.beginPath(); for (var i = 0; i <60; i++){ if(i % 5 == 0){ if(i % 15 ==0){ cxt.fillRect(80,-4,20,8); } else cxt.fillRect(84,-3,16,6); }else{ cxt.fillRect(90, -1, 10, 2); } cxt.rotate(2 * Math.PI/60); } cxt.closePath(); }, init:function(cxt){ this.panRect(cxt); this.numRect(cxt); } }, needle:{ s : { angle : 0, len : 80, color : '#00ff00', rect : function(cxt,time){ cxt.restore(); cxt.save(); cxt.rotate(this.angle); cxt.clearRect(-13, -2, this.len + 2, 4);//要擦多两个像素 cxt.restore(); cxt.save(); this.angle = (time.getSeconds()+time.getMilliseconds()/1000)* Math.PI / 30;//2 * Math.PI / 60 cxt.rotate(this.angle); cxt.fillStyle=this.color; cxt.fillRect(-12,-1, this.len , 2); } }, m : { angle : 0, len : 70, color : '#ff0000', rect : function(cxt,time){ cxt.restore(); cxt.save(); cxt.rotate(this.angle); cxt.clearRect(-13, -3, this.len + 2, 6); cxt.restore(); cxt.save(); this.angle = (time.getSeconds()/60 + time.getMinutes()) * Math.PI / 30; cxt.rotate(this.angle); cxt.fillStyle=this.color; cxt.fillRect(-12,-2, this.len , 4); } }, h : { angle : 0, len : 60, color : '#0000ff', rect : function(cxt,time){ cxt.restore(); cxt.save(); cxt.rotate(this.angle); cxt.clearRect(-13, -4, this.len + 2, 8); cxt.restore(); cxt.save(); this.angle = (time.getMinutes()/60 + time.getHours()*5) * Math.PI / 30; cxt.rotate(this.angle); cxt.fillStyle=this.color; cxt.fillRect(-12,-3, this.len , 6); } }, tickTack : function(cxt){ var time = new Date(); this.h.rect(cxt,time); this.m.rect(cxt,time); this.s.rect(cxt,time); date.innerHTML=time; } }, init : function(cxt){ cxt.translate(200,200); cxt.rotate(-Math.PI / 2); cxt.save(); with(clock){ pan.init(cxt); var MyInterval = setInterval("clock.needle.tickTack(cxt)", 10); } } }; if(c.getContext){ var cxt = c.getContext("2d"); cxt.strokeRect(0,0,c.width,c.height); clock.init(cxt); }
最终效果:
相关文章推荐
- Javascript与HTML5的canvas实现图片旋转效果
- 【HTML5】Canvas 实现放大镜效果
- HTML5 Canvas简简单单实现手机九宫格手势密码解锁
- HTML5组件Canvas实现图像灰度化(步骤+实例效果)
- HTML5 Canvas实现360度全景图
- HTML5 Canvas如何实现纹理填充与描边(Fill And Stroke)
- Html5 Canvas+Javascript实现一个简单画图程序(三)
- HTML5 Canvas实现贪吃蛇(一)
- HTML5 canvas标签实现刮刮卡效果
- HTML5 Canvas 图像动画的实现
- 基于HTML5 Canvas 实现弹出框
- HTML5 中的 canvas 标签 实现动画效果
- HTML5 Canvas 实现的9个 Loading 效果
- js+html5实现canvas绘制圆形图案的方法
- 基于HTML5 Canvas实现用户交互
- html5的canvas实现3d雪花飘舞效果
- HTML5入门十---Canvas画布实现画图(一)
- html5的canvas实现实时时钟
- HTML5 Canvas中实现文字链接
- 将HTML5 Canvas的内容保存为图片借助toDataURL实现