偶然できたパーティクル

by umi_kappa
パーティクルをいじっていたら、たまたま出来た。
なんか面白かったからのっけてみた。
負荷とかまったく考えてないす!

マウスで絵をかくように。
なんか右に流れていきます。
♥0 | Line 74 | Modified 2011-07-07 10:26:56 | MIT License
play

ActionScript3 source code

/**
 * Copyright umi_kappa ( http://wonderfl.net/user/umi_kappa )
 * MIT License ( http://www.opensource.org/licenses/mit-license.php )
 * Downloaded from: http://wonderfl.net/c/2RcQ
 */

package {
    import flash.display.Bitmap;
    import flash.display.BitmapData;
    import flash.geom.ColorTransform;
    import flash.events.Event;
    import flash.display.Sprite;
    
    import net.hires.debug.Stats;
    
    [SWF(width = "465", height = "465", backgroundColor = "0x000000", frameRate = "60")]
    
    public class FlashTest extends Sprite {
        
        //ステージサイズ
	private var _stageW:int;
	private var _stageH:int;
		
	//全てをDrawする
	private var _drawCanvas:BitmapData;
		
	//_drawCanvasが入る
	private var _bmp:Bitmap;
		
	//パーティクルの配列
	private var _pVector:Vector.<Particle>;

        public function FlashTest() {
            init();
            
            startEvent();
        }
		
        //--------------------------------------------------------------------------
        //
        //  初期化
        //
        //--------------------------------------------------------------------------
        private function init():void 
	{
            addChild(new Stats());
            
            _stageW = stage.stageWidth;
            _stageH = stage.stageHeight;
    
            _pVector = new Vector.<Particle>();
			
            _drawCanvas = new BitmapData(_stageW, _stageH, true, 0x00ffffff);
            _bmp = new Bitmap(_drawCanvas);
            addChild(_bmp);
        }
        
        
        //----------------------------------
        //  Start Event
        //----------------------------------
        private function startEvent():void
        {
            addEventListener(Event.ENTER_FRAME, onEF);
        }
        
        
        //----------------------------------
        //  ENTER_FRAME
        //----------------------------------
        private function onEF(e:Event):void
        {
            //パーティクルを生成
            addParticle(mouseX, mouseY, 1, 0);
            
            //パーティクルをうごかす
            moveParticle();
        }
        
        
        
        //----------------------------------
        //  draw
        //----------------------------------
        public function addParticle(x:int, y:int, vx:Number, vy:Number):void
        {
	    var _p:Particle = new Particle(x, y, vx, vy, 0xffffffff);
	    _pVector.push(_p);
        }

        //----------------------------------
        //  move
        //----------------------------------
        public function moveParticle():void
        {
	    var _colorT:ColorTransform = new ColorTransform(1, 1, 1, 0.95);
	    _drawCanvas.colorTransform(_drawCanvas.rect, _colorT);
	
	    var _p:Particle;
	    var _num:uint = _pVector.length;
	    for (var i:uint = 0; i < _num; i++) 
	    {
		_p = _pVector[i];
		_p.x += _p.vx;
		_p.y += _p.vy;
		_p.color += -0x11000000;
		_drawCanvas.setPixel32(_p.x, _p.y, _p.color);
	    }
        }
    }
}



class Particle {
    //x軸
    public var x:Number;
    //y軸
    public var y:Number;
    //x軸方向の速さ
    public var vx:Number;
    //y軸方向の速さ
    public var vy:Number;
    //色
    public var color:Number;
	
    public function Particle(x:Number, y:Number, vx:Number, vy:Number, color:Number):void
    {
    	this.x = x;
    	this.y = y;
	this.vx = vx;
	this.vy = vy;
	this.color = color;
    }
}

Forked