设为首页 加入收藏

TOP

HTML5-炫丽的时钟效果Canvas绘图与动画基础练习(一)
2015-04-07 15:29:14 来源: 作者: 【 】 浏览:137
Tags:HTML5- 炫丽 时钟 效果 Canvas 绘图 动画 基础 练习

HTML5-炫丽的时钟效果Canvas绘图与动画基础练习


HTML5-炫丽的时钟效果Canvas绘图与动画基础练习


全部代码:




var r=8;//圆半径


? ? window.onload=function(){


? ? var canvas=document.getElementById("canvas");


? ? var context=canvas.getContext("2d");


? ? canvas.width=WINDOW_WIDTH;


? ? canvas.height=WINDOW_HEIGHT;


?


? ? window.setInterval(function(){


? ? ? var curr=new Date();


? ? ? var curHours=curr.getHours();


? ? ? var curMinutes=curr.getMinutes();


? ? ? var curSeconds=curr.getSeconds();


? ? ?


? ? ? //当时间的秒数改变时添加彩色小球


? ? ? if(preSeconds!=curSeconds)


? ? ? {


? ? ? ?


? ? ? ? if(parseInt(curHours/10)!=parseInt(preHours/10)){


? ? ? ? addBall(MARGIN_LEFT,MARGIN_TOP,parseInt(curHours/10));? ? ?


? ? ? ? }


? ? ? ? ? if(parseInt(curHours%10)!=parseInt(preHours%10)){


? ? ? ? addBall(MARGIN_LEFT+15*(r+1),MARGIN_TOP,parseInt(curHours%10));? ?


? ? ? ? }


? ? ? ? if(parseInt(curMinutes/10)!=parseInt(preMinutes/10)){


? ? ? ? addBall(MARGIN_LEFT+39*(r+1),MARGIN_TOP,parseInt(curMinutes/10));? ? ?


? ? ? ? }


? ? ? ? ? if(parseInt(curMinutes%10)!=parseInt(preMinutes%10)){


? ? ? ? addBall(MARGIN_LEFT+54*(r+1),MARGIN_TOP,parseInt(curMinutes%10));? ? ?


? ? ? ? }


?


? ? ? ? if(parseInt(curSeconds/10)!=parseInt(preSeconds/10)){


? ? ? ? addBall(MARGIN_LEFT+78*(r+1),MARGIN_TOP,parseInt(curSeconds/10));? ? ?


? ? ? ? }


? ? ? ? ? if(parseInt(curSeconds%10)!=parseInt(preSeconds%10)){


? ? ? ? addBall(MARGIN_LEFT+93*(r+1),MARGIN_TOP,parseInt(curSeconds%10));? ? ?


? ? ? ? }? ? ?


? ? ? }


? ? ? render(context);


? ? ?


? ? ? ? },50);


? ?


? ? }


?


? ? //添加小球(数字num上的彩色小球,x,y:数字方块容器的左上角顶点坐标)


? ? function addBall(x,y,num){


? ? ? ? for (var i=0;i

? ? ? ? {


? ? ? ? ? ? for (var j=0;j

? ? ? ? ? ? {


? ? ? ? ? ? ? ? if(digit[num][i][j]==1){


? ? ? ? ? ? ? ? ? ? ? ? ?


? ? ? ? ? ? ? ? ? ? var ball={


? ? ? ? ? ? ? ? ? ? x:x+j*2*(r+1)+r+1,


? ? ? ? ? ? ? ? ? ? y:y+i*2*(r+1)+r+1,? ? ? ? ? ? ? ? ? ?


? ? ? ? ? ? ? ? ? ? g:1.5+Math.random(),


? ? ? ? ? ? ? ? ? ? vx:Math.pow(-1,Math.ceil(Math.random()*1000))*4,//结果为-4/4


? ? ? ? ? ? ? ? ? ? vy:-5,


? ? ? ? ? ? ? ? ? ? color:colors[Math.floor(Math.random()*colors.length)]


? ? ? ? ? ? ? ? ? ? };


? ? ? ? ? ? ? ? ? ? balls.push(ball);


?


? ? ? ? ? ? ? ? }


? ? ? ? ? ? }


? ? ? ? }


? ? }


? //----画彩色小球


? function renderBalls(context){


? ? ? ? ? ? //context.clearRect(0,0,WINDOW_WIDTH,WINDOW_HEIGHT)


? ? for (var i=0;i

? ? {


? ? ? ? context.beginPath();


? ? ? ? context.arc(balls[i].x,balls[i].y,r,0,2*Math.PI,false);


? ? ? ? context.fillStyle=balls[i].color;


? ? ? ? context.fill();


? ? ? ? context.closePath();


? ? }


? }


?


?//----更新彩色小球位置


? function UpdateBalls(){


? for (var i=0;i

? ? {


? ? balls[i].x+=balls[i].vx;


? ? balls[i].y+=balls[i].vy;


? ? balls[i].vy+=balls[i].g;


? ? if(balls[i].y+r>=WINDOW_HEIGHT){


? ? balls[i].y=WINDOW_HEIGHT-r;


? ? balls[i].vy=-balls[i].vy*0.6;


? ? }


? ? }


? }


?


?


? ? var preHours;


? ? var preMinutes;


? ? var preSeconds;


?


? ? //渲染整个画布


? ? function render(context)


? ? {


? ? ? ? context.clearRect(0,0,WINDOW_WIDTH,WINDOW_HEIGHT)


? ? ? ? var now=new Date();


? ? ? ? var hours=now.getHours();


? ? ? ? var minutes=now.getMinutes();


? ? ? ? var seconds=now.getSeconds();


? ? ? ? preHours=hours;


? ? ? ? preMinutes=minutes;


? ? ? ? preSeconds=seconds;


? ? ? ? //---时


? ? ? ? renderDigit(MARGIN_LEFT,MARGIN_TOP,parseInt(hours/10),context);


? ? ? ? renderDigit(MARGIN_LEFT+15*(r+1),MARGIN_TOP,hours%10,context);


? ? ? ? renderDigit(MARGIN_LEFT+30*(r+1),MARGIN_TOP,10,context);


? ? ? ? //---分


? ? ? ? renderDigit(MARGIN_LEFT+39*(r+1),MARGIN_TOP,parseInt(minutes/10),context);


? ? ? ? renderDigit(MARGIN_LEFT+54*(r+1),MARGIN_TOP,minutes%10,context);


? ? ? ? renderDigit(MARGIN_LEFT+69*(r+1),MARGIN_TOP,10,context);


? ?

首页 上一页 1 2 3 下一页 尾页 1/3/3
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇Python的@符号 下一篇Java开发熟手该当心的11个错误

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: