flash on 2012-6-4

by jokehn9
♥0 | Line 100 | Modified 2012-06-09 22:42:51 | MIT License
play

ActionScript3 source code

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

// forked from jokehn9's temp
package {
    import flash.geom.ColorTransform;
    import flash.geom.Matrix;
    import flash.filters.BlurFilter;
    import flash.geom.Point;
    import flash.utils.Proxy;
    import flash.display.Bitmap;
    import flash.display.BitmapData;
    import flash.events.Event;
    import flash.display.Shape;
    import flash.display.Sprite;
    public class FlashTest extends Sprite {
        private var bitmapDat:BitmapData = new BitmapData(465,465,true,0x0);
        private var bitmap:Bitmap = new Bitmap(bitmapDat);
        private var dark:BitmapData = new BitmapData(465,465,false,0x0);
        
        private var shape:Shape;
        private var arr:Array = [];
        private const num:int = 100;
        private var canvas:BitmapData = new BitmapData(465,465,true,0x0);
        private var toT:ColorTransform = new ColorTransform(0.5,0.5,0.5,0.9,0,0,0,0);
            
        public function FlashTest() {
            // write as3 code here..
            shape = new Shape();
            addChild(new Bitmap(dark));
            var p:Particle = new Particle();
            var rc1:uint = 0xffffff*Math.random();
            var rc2:uint = 0xffffff*Math.random();
            var rc3:uint = 0xffffff*Math.random();
            for(var i:int = 0;i<num; i++) {
                arr[i] = new Particle;
                arr[i].x = arr[i].prevx = Math.random() * 465;
                arr[i].y = arr[i].prevy = Math.random() * 465;
                if(Math.random()*1 < 0.33) {
                    arr[i].color = rc1;
                }
                else if(Math.random()*1 > 0.66) {
                    arr[i].color = rc2;
                }
                else {
                    arr[i].color = rc3;
                }

            }
            addChild(bitmap);
            addEventListener("enterFrame",ff);
            

            
        }
        private function ff(e:Event):void {
            //움직인다.
            var p:Particle;
            var dx:Number,dy:Number;
            var d:Number = 0;
             
            for(var i:int = 0; i<num;i++) {
                
                p = arr[i];
                dx = mouseX - p.x;
                dy = mouseY - p.y;
                d = Math.sqrt(dx*dx + dy*dy);
                p.speedX += dx * 7 / d;
                p.speedY += dy * 7/ d;
                p.speedD = Math.sqrt(p.speedX*p.speedX + p.speedY * p.speedY);
                
                p.ds = d;
                p.x += p.speedX;
                p.y += p.speedY;
                


            }

            //그린다
                shape.graphics.clear();
                //
                shape.graphics.lineStyle(1,0x0);
                for(i = 0; i< num;i++) {
                    shape.graphics.lineStyle(Math.abs(arr[i].speedD/8),arr[i].color,1);
                    shape.graphics.moveTo(arr[i].prevx,arr[i].prevy);
                    shape.graphics.lineTo(arr[i].x ,arr[i].y);
                    arr[i].prevx = arr[i].x
                    arr[i].prevy = arr[i].y
                    
                    
                }
                bitmapDat.draw(shape,shape.transform.matrix);
                bitmapDat.colorTransform(bitmapDat.rect,toT);
                bitmapDat.applyFilter(bitmapDat,bitmapDat.rect,new Point,new BlurFilter(3,3,1));
                
                

        }
        
        private function boom(e:Event):void {
            var dx:Number, dy:Number = 0;
            var mi:int = 0;
            for(var i:int = 0; i<num;i++) {
                    if(Math.random() > 0.5) {
                        mi = 1;
                    }
                    else {
                        mi = -1;
                    }


                    arr[i].speedX =  -60 * Math.random() + 30;
                    arr[i].speedY =  arr[i].speedX * mi;
                
            }

        }

    }
}

class Particle {
    public var x:Number = 0;
    public var y:Number = 0;
    public var speedX:Number = 0;
    public var speedY:Number = 0;
    public var prevx:Number = 0;
    public var prevy:Number = 0;
    public var ds:Number = 0;
    public var color:uint;
    public var speedD:Number = 0;
}