施加摩擦力的运动粒子

二维粒子 everyinch 3178℃ 0评论

只要设置Particle实例的friction属性就可以改变粒子的摩擦力,一般将其设置为0~1之间的小数,从而达到运动速度逐渐变慢的目的。下面举一个简单的示例,类文件名为ParticleFriction.as,源代码如下:

package{
import flash.display.Sprite;
import flash.events.Event;

[SWF(width="800",height="600",backgroundColor="0xffffff",frameRate="31")]
public class ParticleFriction extends Sprite{
private var numbers:Number = 20;
private var particles:Array;

public function ParticleFriction(){
particles=new Array();
stage.addEventListener(Event.ENTER_FRAME, onEnterFrame);
}

private function onEnterFrame(e:Event):void{
if(particles.length < numbers){
var ball:Ball=new Ball(12, 0x00ff00, 1, 0x000000, 1);
addChild(ball);
ball.xVelocity=Math.random() * 20 - 10;
ball.yVelocity=Math.random() * 20 - 10;
ball.gravity=0.9;
ball.friction=0.95;
ball.x=stage.stageWidth/2;
ball.y=stage.stageHeight/4;
particles.push(ball);
}
for (var i:int=0; i < particles.length; i++){
var particle:Ball=particles[i];
particle.update();
if (particle.x - particle.radius > stage.stageWidth || particle.x + particle.radius < 0 || particle.y - particle.radius > stage.stageHeight || particle.y + particle.radius < 0){
particle.xVelocity=Math.random() * 20 - 10;
particle.yVelocity=Math.random() * 20 - 10;
particle.x=stage.stageWidth / 2;
particle.y=stage.stageHeight / 4;
}
}
}
}
}[/code]
由于实现粒子外观的Ball类继承了Particle,它也就继承了Particle所有的共有属性和方法,所以只要实例化Ball就可以设置粒子的各项参数,从而使Ball具有不同的表现效果。这里将初始化ball实例,将其的速度位置为-10~10之间的随机数,并设置0.9的重力使其下落。将friction属性设置为0.95,从而使它的速度逐渐减慢,达到模拟摩擦力的目的。将所有的粒子都压入数组当中,在随后的for循环中遍历该数组,调用共有方法update使粒子运动起来。当超过环境边界后,再重置它的速度和位置。

转载请注明:陈童的博客 » 施加摩擦力的运动粒子

喜欢 (1)
发表我的评论
取消评论

表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址
'; } if( dopt('d_footcode_b') ) echo dopt('d_footcode'); ?>