forked from: flash on 2011-1-22

by vagnok forked from flash on 2011-1-22 (diff: 12)
♥0 | Line 61 | Modified 2011-01-26 17:33:58 | MIT License
play

ActionScript3 source code

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

// forked from hig_an's flash on 2011-1-22
package {
    import flash.display.Sprite;
    import flash.display.Bitmap;
    import flash.display.BitmapData;
    import flash.events.Event;
    import flash.geom.Matrix;
    [SWF(backgroundColor='#000', frameRate='60', width='465', height='465')]

    
    public class Main extends Sprite {
        private var numOfList:Number = 512;
        private var circleSize:Number = 5;
        
        private var sp:Sprite;
        private var mt:Matrix;
        private var bmpd:BitmapData;
        private var list:Array;
        
        public function Main() {
            sp = newFig(-5, 0, circleSize);
            list = new Array();
            bmpd = new BitmapData(stage.stageWidth, stage.stageHeight, false,0x0);
            mt = new Matrix();
            
            addChild(new Bitmap(bmpd));
            addEventListener(Event.ENTER_FRAME, loop);
            for (var i:int = 0; i < numOfList; i++) {
                list[i] = new Circle(i * 1+circleSize, 2);
            }
        }
        public function loop(e:Event):void {
            bmpd.lock();
            bmpd.fillRect(bmpd.rect, 0x0);
            list[0].x = Math.abs(mouseX - stage.stageWidth);
            list[0].y = Math.abs(mouseY - stage.stageHeight);
            mt.identity()
            mt.translate(list[0].x, list[0].y);
            bmpd.draw(sp, mt);
            for (var i:int = 1; i < list.length; i++) {
                list[i].x += (list[i - 1].x -list[i].x) * 0.2;
                list[i].y += (list[i - 1].y -list[i].y) * 0.2;
                mt.identity()
                mt.translate(list[i].x, list[i].y);
                bmpd.draw(sp, mt);
            }
            bmpd.unlock();
        }
        public function newFig(x:Number,y:Number,size:Number) :Sprite{
            var s:Sprite = new Sprite()
            s.graphics.beginFill(0xFFE4F);
            s.graphics.drawCircle(x, y, size);
            s.graphics.endFill();
            
            return s;
        }
    }
}

class Circle{
        public var x:Number;
        public var y:Number;
        public var vx:Number = 8.0;
        public var vy:Number = 8.0;
        public function Circle(xx:Number, yy:Number ) {
            x = xx;
            y = yy;
        }
    }