## 第一课时:动画效果
通过改变坐标,很容易在画布 Canvas 元素上产生动画效果。
~~~
var canvas = document.getElementById('myCanvas');
var ctx = canvas.getContext('2d');
var posX = 20;
var posY = 100;
setInterval(function () {
ctx.fillStyle = 'black';
ctx.fillRect(0, 0, canvas.width, canvas.height);
posX += 1;
posY += 0.25;
ctx.beginPath();
ctx.fillStyle = 'white';
ctx.arc(posX, posY, 10, 0, Math.PI * 2, true);
ctx.closePath();
ctx.fill();
}, 30);
~~~
上面代码会产生一个小圆点,每隔30毫秒就向右下方移动的效果。`setInterval()`函数的一开始,之所以要将画布重新渲染黑色底色,是为了抹去上一步的小圆点。
在这个例子的基础上,通过设置圆心坐标,可以产生各种运动轨迹。下面是先上升后下降的例子。
~~~
var vx = 10;
var vy = -10;
var gravity = 1;
setInterval(function () {
posX += vx;
posY += vy;
vy += gravity;
// ...
});
~~~
上面代码中,`x`坐标始终增大,表示持续向右运动。`y`坐标先变小,然后在重力作用下,不断增大,表示先上升后下降。
- 第一章:音视频
- 第一节:概述
- 第二节:媒体元素
- 第三节:视频元素
- 第四节:音频元素
- 第四节:事件
- 第二章:高德地图
- 第三章:Storage 接口
- 第一节:概述
- 第二节:属性和方法
- 第三节:事件
- 第四章:IndexedDB
- 第一节:概述
- 第二节:基本概念
- 第三节:indexedDB 对象
- 第四节:IDBRequest 对象
- 第五节:IDBDatabase 对象
- 第六节:IDBObjectStore 对象
- 第七节:IDBTransaction 对象
- 第八节:IDBIndex 对象
- 第九节:IDBCursor 对象
- 第十节:IDBKeyRange 对象
- 第十一节:操作流程
- 第五章:Canvas
- 第一节:概述
- 第二节:绘制图像
- 第一课时:路径
- 第二课时:线型
- 第三课时:矩形
- 第四课时:弧线
- 第五课时:文本
- 第六课时:渐变色和图像填充
- 第七课时:阴影
- 第三节:图像处理
- 第一课时:写入图像
- 第二课时:像素读写
- 第三课时:保存和恢复
- 第四课时:画布
- 第五课时:图像变换
- 第四节:元素方法
- 第一课时:toDataURL()
- 第二课时:toBlob()
- 第五节:使用实例
- 第一课时:动画效果
- 第二课时:像素处理