In case Flash no longer exists; a copy of this site is included in the Flashpoint archive's "ultimate" collection.

Dead Code Preservation :: Archived AS3 works from wonderfl.net

forked from: Draw circles with lights :D

-----------------------------------
------------ IMPORTS --------------
-----------------------------------    import flash.display.Bitmap;
/**
 * Copyright Brendyn.Zachary ( http://wonderfl.net/user/Brendyn.Zachary )
 * MIT License ( http://www.opensource.org/licenses/mit-license.php )
 * Downloaded from: http://wonderfl.net/c/zDNM
 */


package {
    
    // -----------------------------------
    // ------------ IMPORTS --------------
    // -----------------------------------    import flash.display.Bitmap;
    import flash.display.Bitmap;
    import flash.display.BitmapData;
    import flash.display.Sprite;
    import flash.events.Event;
    import flash.filters.BlurFilter;
    import flash.geom.Matrix;
    import flash.geom.Point;

    public class DrawLight extends Sprite {
        
        // -----------------------------------
        // ----------- CONSTANTS -------------
        // -----------------------------------
        private static const CIRCLE_STAGE_WIDTH : Number = 1000;
        private static const CIRCLE_STAGE_HEIGHT : Number = 700;
        
        
        // -----------------------------------
        // ----- VARIABLE DECLARATIONS -------
        // -----------------------------------    
        private var _container : Bitmap;
        private var _centerX : Number;
        private var _centerY : Number;
        private var _radius : Number;
        private var _angle : Number;
        private var _degree : Number;
        private var _speed : Number;
        private var _ranNum :Number;
        private var _circleBMD:BitmapData;
        private var _newX:Number;
        private var _newY:Number;
        private var _circleSize:Number;

        // -----------------------------------
        // ----------- METHODS ---------------
        // -----------------------------------
        public function DrawLight()  {
            init();
        }
        
        
        /**
         * @private
         */
        private function init():void{
            
            prepareStage();
               startNewCircle();
        
            addEventListener(Event.ENTER_FRAME, enterFrameHandler, false, 0, true);
        }
        
        
        /**
         * @private
         */
        private function prepareStage() : void {
            var stage:Sprite = new Sprite();
            stage.graphics.beginFill(0x000000);
            stage.graphics.drawRect(0, 0, CIRCLE_STAGE_WIDTH, CIRCLE_STAGE_HEIGHT);
            stage.graphics.endFill();
            addChild(stage);
            
            _circleBMD = new BitmapData(CIRCLE_STAGE_WIDTH, CIRCLE_STAGE_HEIGHT, true, 0x000000);        
            _container = new Bitmap(_circleBMD);
            addChild(_container);
        }
        
        
        /**
         * @private
         * Reset the variables to start in a new location
         */
        private function startNewCircle():void {
            
            _centerY = Math.random() * CIRCLE_STAGE_HEIGHT;
            _centerX =  Math.random() * CIRCLE_STAGE_WIDTH;
            _ranNum = Math.random() + 0.4;
            _circleSize = Math.random() + 20;
            _radius = _ranNum * CIRCLE_STAGE_WIDTH/4;
            _speed = _ranNum * 9;
            _degree = 0;
        }
        
        
        /**
         * @private
         * Blur the bitmap data on each ENTER_FRAME, and create a new dot
         */
        private function enterFrameHandler($evt:Event):void {
            
            createDot();
            calculateDotPosition();
            
            _circleBMD.applyFilter(_circleBMD, _circleBMD.rect, new Point(0,0), new BlurFilter(10,10,1));
            
//            _circleBMD.scroll(0, -8);
        }


        /**
         * @private
         */
        private function createDot():void{
            
            var dotSprite:Sprite = new Sprite();
            dotSprite.graphics.beginFill(0xFFFF99);
            dotSprite.graphics.drawCircle(0, 0, _circleSize);
            dotSprite.graphics.endFill();
            
            var m:Matrix = dotSprite.transform.matrix;
            m.tx = _newX;
            m.ty = _newY;
            
            _circleBMD.draw(dotSprite, m);
        }
        
        /**
         * @private
         */
        private function calculateDotPosition():void{
            
            _angle = _degree * (Math.PI / 180);
            _degree = _degree + _speed;
            
            _newX = _radius * Math.cos(_angle) + _centerX;
               _newY = _radius * Math.sin(_angle) + _centerY;
            
            if (_degree >360) startNewCircle();
        }
        
    }
 
}