快捷搜索:  汽车  科技

html5 canvas特效代码(HTML5画布Canvas绘制生成各种粒子物理动态效果)

html5 canvas特效代码(HTML5画布Canvas绘制生成各种粒子物理动态效果)2. 了解Javascript的基础知识1. 了解基础HTML标签,例如canvas标签3. 添加粒子碰撞动画效果4. 添加粒子四面碰撞效果基础要求:

html5 canvas特效代码(HTML5画布Canvas绘制生成各种粒子物理动态效果)(1)

小教程

html5 canvas特效代码(HTML5画布Canvas绘制生成各种粒子物理动态效果)(2)

目录:

1. 绘制静态粒子图形效果

2. 添加静态粒子动画效果

3. 添加粒子碰撞动画效果

4. 添加粒子四面碰撞效果

html5 canvas特效代码(HTML5画布Canvas绘制生成各种粒子物理动态效果)(3)

基础要求:

1. 了解基础HTML标签,例如canvas标签

2. 了解Javascript的基础知识

第一步: 生成静态粒子图形

生成静态粒子图形,我们将会使用到Canvas的如下相关方法:

context.fillRect(x y width height);

context.arc(x y r sAngle eAngle counterclockwise);

其中,使用fillRect方法生成了整个动画场景,布满了画布全部区域,再使用arc方法来生成一个圆形,arc方法本身用来生成圆弧,但是如果生成一个360度的圆弧的话,就自然生成了圆形,完整代码如下:

var canvas = document.getElementById('gbcanvas')

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

var posX = 30 //定义圆心X坐标

posY = 30 //定义圆心Y坐标

particleRadius = 30; //定义半径

context.fillStyle = '#E4E4E4';

context.fillRect(0 0 canvas.width canvas.height); //生成画布背景色

context.beginPath;

context.fillStyle = '#dd4814';

context.arc(posX posY particleRadius 0 Math.PI*2 true);

context.closePath;

context.fill;

在线演示&调试地址

http://www.igeekbar.com/igclass/code/5392196c-400d-466c-b0cb-647bbc3469cc.htm

第二步: 生成粒子运行效果

动画效果原理:

HTML5 画布动画生成原理,本质来说实现方式就是每隔固定时间段重新绘制画布内的图形,如下是代码:

var canvas = document.getElementById('gbcanvas')

context = canvas.getContext('2d')

posX = 30

posY = 30

particleRadius = 30;

//定义setInterval来隔特定时间生成粒子,如下

setInterval(function{

//为了能够生成粒子移动效果,我们需要在每次绘制粒子之前清楚界面里的绘图

context.fillStyle = '#E4E4E4';

context.fillRect(0 0 canvas.width canvas.height); //使用背景色填充

posX =2;

posY =1;

context.arc(posX posY particleRadius 0 Math.PI*2 true);

} 10);

以上代码我们使用fillRect方法来先将整个背景色重新填充,再使用arc方法重新绘制圆形,来生成移动的效果

在线演示&调试地址

http://www.igeekbar.com/igclass/code/d2ff678f-23f1-4cab-9eba-9898d4393017.htm

第三步: 生成粒子碰撞效果

使用HTML5画布生成一个粒子碰撞地面效果,并且同时添加相关重力加速度效果。

首先定义粒子x轴和y轴的运动速度及重力加速度,如下:

speedX = 10 //定义一个X轴方向的速度

speedY = 10 //定义一个Y轴方向的速度

gravity = 1; //定义一个重力的参数,即重力加速度

然后,设置粒子运动速度,即每次绘制粒子圆心坐标的变化,如下:

//以下代码设置运动速度

posX =speedX;

posY =speedY;

同时,保证Y轴拥有一个加速度效果,如下:

//添加重力加速度效果

speedY =gravity;

最后,我们添加一个地面碰撞效果,判断当粒子的中心Y轴低于canvas的高度减去粒子半径,即粒子部分区域低于画布最低端的时候,重新定义粒子的位置,如下:

//接下来我们添加地面反弹效果,只需要判断当粒子运动到近画布底端的时候,粒子Y轴坐标反向

if(posY > canvas.height - particleRadius){

speedY*=-0.5; //这里设置粒子速度为负值,修改此数值可以修改粒子Y轴运动速度损耗量

speedX*=0.5; //这里设置粒子X轴速度的损耗量

posY = canvas.height - particleRadius; //这里当粒子低于画布最低端的时候,设置保证其不消失

}

在线演示&调试地址

http://www.igeekbar.com/igclass/code/8a3cfeb7-b052-4bf7-b3b1-8ec4e59584af.htm

第四步: 生成四面碰壁粒子效果

上面我们生成了粒子碰撞地面效果,本节我们添加粒子四面碰壁效果,基本代码如下:

//判断粒子位于画布右侧可显示区域外

if(posX > canvas.width - particleRadius){

speedX*=-1;

posX = canvas.width - particleRadius;

}

//判断粒子位于画布左侧可显示区域外

if(posX < particleRadius){

speedX*=-1;

posX = particleRadius;

}

//最后添加顶端的反弹效果

if(posY < particleRadius){

speedY*=-1;

posY = particleRadius;

}

大家可以看到,代码基本和碰撞地面效果类似,只不过判断粒子中心所处的坐标位置来修改粒子运动的方向。

在线演示&调试地址

http://www.igeekbar.com/igclass/code/87784219-f527-4f52-bfb2-62cd82bbc07d.htm

html5 canvas特效代码(HTML5画布Canvas绘制生成各种粒子物理动态效果)(4)

Done!以上就是几个HTML5实现粒子物理碰撞的例子, 希望大家能够觉得有用, 有任何问题,请给我留言哈

html5 canvas特效代码(HTML5画布Canvas绘制生成各种粒子物理动态效果)(5)

html5 canvas特效代码(HTML5画布Canvas绘制生成各种粒子物理动态效果)(6)

猜您喜欢: