forked from: forked from: forked from: forked from: flash on 2011-1-22

by omari forked from forked from: forked from: forked from: flash on 2011-1-22 (diff: 4)
♥0 | Line 73 | Modified 2011-01-25 17:17:39 | MIT License
play

ActionScript3 source code

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

// forked from hig_an's forked from: forked from: forked from: flash on 2011-1-22
// forked from hig_an's forked from: forked from: flash on 2011-1-22
// forked from hig_an's forked from: flash on 2011-1-22
// 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;
    import flash.events.MouseEvent;
    import flash.ui.Mouse;
    [SWF(backgroundColor='#000000', frameRate='30', width='465', height='465')]

    
    public class Main extends Sprite {
        private var numOfList:Number = 300;
        private var circleSize:Number = 60;
        
        private var sp:Sprite;
        private var mt:Matrix;
        private var bmpd:BitmapData;
        private var circleList:Array;
        private var spList:Array;
        
        public function Main() {
            spList = new Array();
            
            circleList = new Array();
            
            bmpd = new BitmapData(stage.stageWidth, stage.stageHeight, false,0xFFFFFF);
            mt = new Matrix();
            
            addChild(new Bitmap(bmpd));
            addEventListener(Event.ENTER_FRAME, loop);
            stage.addEventListener(MouseEvent.CLICK, reset);
            for (var i:int = 0; i < numOfList; i++) {
                circleList[i] = new Circle(i * 100 + circleSize, 100);
                spList[i] = newFig(0, 0, circleSize - circleSize * i / numOfList, 0xFFFFFF * Math.random());
            }
        }
        private function loop(e:Event):void {
            bmpd.lock();
            circleList[0].x = Math.abs(mouseX - stage.stageWidth);
            circleList[0].y = Math.abs(mouseY - stage.stageHeight);
            mt.identity()
            mt.translate(circleList[0].x, circleList[0].y);
            bmpd.draw(spList[0], mt);
            for (var i:int = 1; i < circleList.length; i++) {
                circleList[i].x += (circleList[i - 1].x -circleList[i].x) * 0.5;
                circleList[i].y += (circleList[i - 1].y -circleList[i].y) * 0.5;
                mt.identity()
                mt.translate(circleList[i].x, circleList[i].y);
                bmpd.draw(spList[i], mt);
            }
            bmpd.unlock();
        }
        private function newFig(x:Number,y:Number,size:Number,col:uint = 0xFFFFFF) :Sprite{
            var s:Sprite = new Sprite()
            s.graphics.beginFill(col);
            s.graphics.drawCircle(x, y, size);
            s.graphics.endFill();
            
            return s;
        }
        private function reset(e:MouseEvent):void {
            for (var i:int = 0; i < numOfList; i++) {
                spList[i] = newFig(0, 0, circleSize - circleSize * i / numOfList, 0xFFFFFF * Math.random());
                circleList[i].x = circleList[0].x;
                circleList[i].y = circleList[0].y;
            }
            bmpd.fillRect(bmpd.rect, 0xFFFFFF);
        }
    }
}

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