商务合作:179001057@qq.com

Emitter粒子特效研究 深入组合效果研究 (二)

技术2022-05-11  0


某平台价值19860元的编程课程资料免费领取【点我领取】


二:容器各层级的关系:

//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);


最新回复(0)