二:容器各层级的关系:
//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);