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

二:容器各层级的关系:

//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
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值