亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定

HTML5是實現計時動畫效果

標簽:
Html5

该实例根据慕课网视频制作

实现原理:利用HTML5的canvas,绘制出一个小球,然后根据数字的矩阵数组来排行小球,如数字0的矩阵数组:

[
 [0,0,1,1,1,0,0],
 [0,1,1,0,1,1,0],
 [1,1,0,0,0,1,1],
 [1,1,0,0,0,1,1],
 [1,1,0,0,0,1,1],
 [1,1,0,0,0,1,1],
 [1,1,0,0,0,1,1],
 [1,1,0,0,0,1,1],
 [0,1,1,0,1,1,0],
 [0,0,1,1,1,0,0]
],//0

根据数字0的矩阵数组,可以分别绘制出时间的时,分,秒 的小球数字;然后就是时间的变化,跟普通做时间计时效果一样,利用JS的setInterval函数:

setInterval(function(){
 render(context);
 update(); //具体实现参考源码
},50);

动画效果:首先看一个小球的运动效果:http://aweig.github.io/demo/canvas_time/ball.html

<canvas id="canvas" style="display:block; margin:50px auto;border:1px solid #000"></canvas>

 <script>
 //小球的x点,y点,r半径,g加速度,xv水平速度,yv垂直速度,color颜色
 var ball = {x:550, y:50, r:10, g:2, xv:-10, yv:-10, color:'red'};
 window.onload = function(){
 var canvas = document.getElementById('canvas');

 canvas.width=300 ;
 canvas.height = 300;

 var context = canvas.getContext('2d'); 

 setInterval(function(){
 render(context);
 update();
 },50);

 }

 function update(){
 ball.x += ball.xv;
 ball.y += ball.yv;
 ball.yv += ball.g;

 if(ball.y >= 300-ball.r){
 ball.y = 300-ball.r ;
 ball.yv = -ball.yv * 0.25;
 }

 }

 function render(cxt){
 cxt.clearRect(0, 0, canvas.width, canvas.height);
 cxt.beginPath();
 cxt.arc(ball.x, ball.y, ball.r, 0, 2*Math.PI);
 cxt.closePath();
 cxt.fillStyle = ball.color;
 cxt.fill();
 } 

 </script>

最后,根据时间值的变化产生出更多的效果

demo地址:

单个小球运动:http://aweig.github.io/demo/canvas_time/ball.html

完整demo:http://aweig.github.io/demo/canvas_time/index.html

源码地址:https://github.com/aweig/aweig.github.io/tree/master/demo/canvas_time

點擊查看更多內容
22人點贊

若覺得本文不錯,就分享一下吧!

評論

作者其他優質文章

正在加載中
Web前端工程師
手記
粉絲
4
獲贊與收藏
562

關注作者,訂閱最新文章

閱讀免費教程

感謝您的支持,我會繼續努力的~
掃碼打賞,你說多少就多少
贊賞金額會直接到老師賬戶
支付方式
打開微信掃一掃,即可進行掃碼打賞哦
今天注冊有機會得

100積分直接送

付費專欄免費學

大額優惠券免費領

立即參與 放棄機會
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號

舉報

0/150
提交
取消