Dec 16

写了一个FLASH粒子系统类,很烂很烂,不过灵活

ActionScript3.0


用到了滤镜,实现拖尾
CUP貌似降不下来
使用这类效果还是小范围较好

package  
{
  import flash.display.Bitmap;
  import flash.display.BitmapData;
  import flash.display.Sprite;
  import flash.events.Event;
  import flash.filters.BlurFilter;
  import flash.filters.ConvolutionFilter;
  import flash.geom.Point;
  import flash.geom.Rectangle;
  /**
   * ...
   * @author Emment
   */
  public class test extends Sprite
  {
    private var particles:Array = new Array();
    private var _bitmapD:BitmapData;
    private var _bitmap:Bitmap;
    private var _pNum:int = 110;
    private var stageW:int;
    private var stageH:int;

    public function test() 
    {
      stageW = stage.stageWidth;
      stageH = stage.stageHeight;
      _bitmapD = new BitmapData(stageW, stageH, false, 0);
      _bitmap = new Bitmap(_bitmapD);
      addChild(_bitmap);
      for (var i:int = 0; i < _pNum;i++ ) {
        makeParticle();
      }
      addEventListener(Event.ENTER_FRAME,enter);
    }
    private function makeParticle():void
    {
      var _particle:Particle;
      _particle = new Particle(SparkCyan, this, Math.random() * stageW, Math.random() * stageH);
      _particle.setScale(Math.random());
      _particle.setVel(randRange(-5,5),randRange(-5,5));
      _particle.directionRotate = true;
      _particle.gravity = -0.1;
      particles.push(_particle);
    }
    private function enter(e:Event):void
    {
      _bitmapD.lock();
      for each(var p:Particle in particles) {
        if (p.clip.x < 0 || p.clip.x > stageW || p.clip.y < 0 || p.clip.y > stageH) {
          p.disable();
        }
        p.updateRotation();
        p.update();
      }
      makeParticle();
      if (particles.length > _pNum) {
        var _particle:Particle = particles.shift();
        _particle.disable();
        _particle.destroy();
      }
      _bitmapD.draw(this);
      _bitmapD.unlock();
      _bitmapD.applyFilter(_bitmapD,_bitmapD.rect, new Point(0, 0), new BlurFilter(2,2,4));
    }
    function randRange(min:Number, max:Number)
    {
      var randomNum:Number = (Math.random() * (max - min )) + min;
      return randomNum;
    }
  }
  
}

to "写了一个FLASH粒子系统类,很烂很烂,不过灵活"

  1. 呵呵 Says:

    能下载吗

  2. 呵呵 Says:

    http://blog.zupko.info 原来大部分是来自这的

  3. emment Says:

    还真那么点像,不过请看看日期哦,人家的是2月17号
    我是1月份的。汗 。而且人家是3D里的粒子 我是平面滴Sleep

  4. 允诺 Says:

    emment 前辈你还有没有这个demo的源码啊
    能不能给我一份啊!谢谢

Leave a Reply