二:容器各层级的关系:
//set up particle // 建立粒子行为 Box为库中的影片剪辑var particle:Particle = new Particle(Box);/* ………………省略粒子行为代码
*/
//set up gravity field 增加重力场 UniformField(x:Number = 0, y:Number = 0.4)表示flash坐标系中x与y轴的加速度大小var field:UniformField = new UniformField(0,0.25);particle.addGravity(field);
//set up source 建立(粒子)发射器,确定发射点坐标并且装载粒子行为 (一个发射源,可以发射多种多样的粒子,可以动态删除和添加粒子行为)var source:PointSource = new PointSource();source.x =320, source.y = 240;source.addParticle(particle);
//set up emitter 建立辐射源,并且添加发射器 (同样,一个辐射区域可以有增加多个发射源,可以动态删除和添加发射源)var emitter:Emitter = new Emitter();emitter.addSource(source);addChild(emitter); //(最后,将区域添加到显示对像中才能正常的显示,我们便可以看到对应该的效果了)
三:行为的开关属性(默认值都为true)
active — Property, class idv.cjcat.emitter.Particle 粒子效果是否运动 active — Property, class idv.cjcat.emitter.ParticleSource 发射器是否运行 active — Property, class idv.cjcat.emitter.behaviors.Behavior active — Property, class idv.cjcat.emitter.behaviors.BehaviorTrigger active — Property, class idv.cjcat.emitter.deflectors.Deflector active — Property, class idv.cjcat.emitter.fields.Field
当active为false时,burst(amount:Number = 15, duration:Number = 1)为起启动相应对象(amount为数量,duration为限制(内容不清楚)) (使用参照burst.fla例子)
四:粒子的特性 01.受重力场作用 var field:UniformField = new UniformField(0,0.25);//(值为0,0.25,当为默认值时:(0,0.4),可模拟只受重力作用) particle.addGravity(field);
02.CircleDeflector增加粒子的圆偏转属性(示例参照CircleDeflector.fla)
var deflector:CircleDeflector = new CircleDeflector(); deflector.x = 380, deflector.y = 310;//圆心x,y轴的位置 deflector.radius = 140;//圆的半径 particle.addDeflector(deflector);//将粒子赋于偏转功能
五: 粒子产生源的形状
01.点粒子源 (最为简单的粒子产生源) var source:PointSource = new PointSource(); source.x = 320, source.y = 240; source.addParticle(particle); 02.线形粒子源 (构造方法,坐标,以及线长度。线呈水平方向,不知道有没有竖立状态?)(示例参照CircleDeflector.fla) var source:LineSource = new LineSource(); source.x = 320, source.y = 100; source.length = 180; source.addParticle(particle);
03.圆形粒子源 (可以动态的改变x,y,以及radius半径的值,改变,粒子产生的区域,CircleSource.fla) var source:CircleSource = new CircleSource(); source.x = 320, source.y = 240; source.radius = 100; source.addParticle(particle);
04.将某个影片对象的形状作为粒子源 //sourceShape_mc为一个影片剪辑(DisplayObjectSource.fla) var source:DisplayObjectSource = new DisplayObjectSource(sourceShape_mc); source.x = 320, source.y = 240; source.addParticle(particle);
六:定义一个区域(粒子运动范围) 01.方形区域 RectTrigger var rectTrigger:RectTrigger = new RectTrigger(x, y, width, height);
p1.addBehaviorTrigger(rectTrigger);//粒子行为压入这个方形区域
02.圆形区域 var circleTrigger:CircleTrigger = new CircleTrigger(); circleTrigger.x = circle_mc.x; circleTrigger.y = circle_mc.y; circleTrigger.radius = circle_mc.width / 2;
p2.addBehaviorTrigger(circleTrigger);//粒子行为压入这个圆形区域
03.将上面二个区域赋于死亡属性(脱离区域死亡) //定义死亡属性 var deathBehavior:DeathBehavior = new DeathBehavior();
//给区域添加属性 rectTrigger.addBehavior(deathBehavior);//方形
circleTrigger.addBehavior(deathBehavior);//圆形 (当粒子脱离这个区域时,粒子将死亡,消失)
示例: //给p2粒子行为限定一个范围 var deathBehavior:DeathBehavior = new DeathBehavior(); var circleTrigger:CircleTrigger = new CircleTrigger(); circleTrigger.x = 320; circleTrigger.y = 240; circleTrigger.radius = 130; circleTrigger.addBehavior(deathBehavior);//圆形变成死亡区域 p2.addBehaviorTrigger(circleTrigger);
七:分裂事件 var sb1:SpawnBehavior = new SpawnBehavior(p2, 2,0);(double spawn behavior.fla)
sb1为一个分裂事件,将p1中每一个粒子的坐标坐为源点位置,生成N个新的p2粒子
//set up behavior trigger 触发器1,触发器2 分别添加到二个粒子行为中 var dt1:DeathTrigger = new DeathTrigger(); var dt2:DeathTrigger = new DeathTrigger(); p1.addBehaviorTrigger(dt1);//当p1死亡后,添加了一个执行器dt1,用来执行事件sb1 p2.addBehaviorTrigger(dt2);//当p2死亡后,添加了一个执行器dt2,用来执行事件sb1
//set up behavior//定义触发的行为 var sb1:SpawnBehavior = new SpawnBehavior(p2, 2,0);//为dt1创建一个粒子分裂事件 var sb2:SpawnBehavior = new SpawnBehavior(p3, 2,0);//为dt2创建一个粒子分裂事件 dt1.addBehavior(sb1);//触发器1执行行为sb1 dt2.addBehavior(sb2);//触发器2执行行为sb2
八:生命周期内事件(当一个粒子在生命周期内,单位时间内有次数的触发,另一个粒子行为)
//set up behavior trigger var lifeTrigger:LifeTrigger = new LifeTrigger(); lifeTrigger.triggerEvery = 5; p1.addBehaviorTrigger(lifeTrigger);
//set up behavior var spawnBehavior:SpawnBehavior = new SpawnBehavior(p2, 1); lifeTrigger.addBehavior(spawnBehavior);
九:径向场(粒子趋向某一点运动)
public function RadialField(x:Number = 0, y:Number = 0, strength:Number = 1, distancePower:Number = 0)
Parameters x:Number (default = 0) //点x轴坐标 y:Number (default = 0) //点y轴坐标 strength:Number (default = 1) //方向以及趋向的力度
distancePower:Number (default = 0) //趋向的力量加速度
示例: var field:RadialField = new RadialField(); field.strength = -1; particle.addGravity(field);