六狼论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博账号登陆

只需一步,快速开始

搜索
查看: 160|回复: 0

柔软的canvas时钟

[复制链接]

升级  34.67%

30

主题

30

主题

30

主题

秀才

Rank: 2

积分
102
 楼主| 发表于 2013-1-4 03:04:57 | 显示全部楼层 |阅读模式
<div id="cnblogs_post_body">
本例是一个基于canvas的时钟,鼠标滑过的时候会有类似果冻的抖动效果!
代码如下:
<div class="cnblogs_code"><!doctype html><html><head><meta charset="utf-8"/><title>柔软的canvas时钟</title><style> #myCanvas{margin:50px auto;display:block;}</style></head><body><canvas id="myCanvas" width="200px" height="200px">您的破浏览器不支持canvas!</canvas><script type="text/javascript" src="js/jQuery.js"></script><script type="text/javascript" src="js/tween.js"></script><script>//设置全局变量var mycanvas=document.getElementById('myCanvas');var context=mycanvas.getContext('2d');window.onload=init;//init函数function init(){ context.translate(100,100);//改变中心位置 draw(); setInterval(draw,1000);}//draw函数function draw(){ context.clearRect(-150,-150,150,150); var time=new Date();//获取时间变量 var hour=(time.getHours()%12)*2*Math.PI/12; var minute=time.getMinutes()*2*Math.PI/60; var second=time.getSeconds()*2*Math.PI/60; context.beginPath();//绘制一个表盘 context.arc(0,0,100,0,2*Math.PI,false); var gradient = context.createRadialGradient(0,0,0,0,0,100); //设置圆形渐变色 gradient.addColorStop(0,'#0cf'); gradient.addColorStop(1,'#aef');  context.fillStyle=gradient; context.fill(); context.fillStyle='#fff';   context.textBaseline='top';  context.font="normal 14px sans-serif"; context.fillText('Canvas',-20,-60); context.strokeStyle="#fff";//画时针 context.lineWidth=5; context.rotate(hour); context.beginPath(); context.moveTo(0,10); context.lineTo(0,-50); context.stroke(); context.rotate(-hour); context.strokeStyle="#fff";//画分针 context.lineWidth=5; context.rotate(minute); context.beginPath(); context.moveTo(0,10); context.lineTo(0,-80); context.stroke(); context.rotate(-minute); context.strokeStyle="#fff";//画秒针 context.lineWidth=3; context.rotate(second); context.beginPath(); context.moveTo(0,10); context.lineTo(0,-90); context.stroke(); context.rotate(-second);}//柔软形变var t=null;function sk(){ var du=20; function a(){  var n=1;  var d=10;  var c=Math.abs(du)-1;  if(c==-1)   return;  if(du>0){   c=-c;  }  c=c-du;  var b=du;  function aa(){   n++;   if(n>d){    clearTimeout(t);    a();    return;   }   du=Tween.Linear(n,b,c,d);   $('#myCanvas').css('-webkit-transform','skew('+du+'deg)');   t=setTimeout(aa,17);  }  aa(); } a();}mycanvas.onmouseover=sk;</script></body></html>
您需要登录后才可以回帖 登录 | 立即注册 新浪微博账号登陆

本版积分规则

快速回复 返回顶部 返回列表