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

Molamil - AnimatedBackground

Get Adobe Flash player
by RamiroEspada 15 Oct 2010
    Embed
package {
    import flash.text.engine.DigitCase;

    import flash.display.Bitmap;
    import flash.display.BitmapData;
    import flash.display.Sprite;
    import flash.events.Event;
    import flash.filters.BlurFilter;
    import flash.geom.ColorTransform;
    import flash.geom.Matrix;
    import flash.geom.Point;
    import flash.geom.Rectangle;
    /**
     * @author Ramiro Espada
     * @author http://www.molamil.com
     */
    public class AnimatedBackground extends Sprite {

        public var speedX:Number;
        public var speedY:Number;
        public var linesSpeed:Number;
        public var contentWidth:Number;
        public var contentHeight:Number;
        
        private var bmp:Bitmap;
        private var bmd:BitmapData;
        private var filter:BlurFilter;
        private var container:Sprite;
        private var bg:Sprite;
        private var l:Light;
        private var rectangle:Rectangle;
        private var matrix:Matrix;
        private var color:ColorTransform;
        private var i:int;
        private var line:Line;
        private var lines:Array;
        private var linesContainer:Sprite;
        
        public function AnimatedBackground(){
            init();    
        }
        
        public function init():void {
            
            speedX = 60;
            speedY = 30;
            linesSpeed = 7;
            
            contentWidth = stage.stageWidth;
            contentHeight = stage.stageHeight;
            
            i = 0;
  
            filter = new BlurFilter(12, 12, 1);
            
            container = new Sprite();
            container.visible = false;
            
            bg = new Sprite();
            addChild(bg);
            
            bg.graphics.beginFill(0xE2007E);
            bg.graphics.drawRect(0, 0, contentWidth, contentHeight);
           
            bmd = new BitmapData(contentWidth, contentHeight, true, 0xE2007E);
            bmp = new Bitmap(bmd);    
            addChild(bmp);

            rectangle = new Rectangle(0, 0, contentWidth, contentHeight);
            matrix = new Matrix();
            color = new ColorTransform();
            
            linesContainer = new Sprite();
            
            var total:int = Math.floor(contentWidth/40);
            var lineWidth:Number = contentWidth/(total);
            lines = new Array();
            for (var n:int = 0; n<total+1; n++){            
                line = new Line();
                line.speed = linesSpeed;
                line.lineWidth = lineWidth;
                line.xInit = (n + 1) * lineWidth;
                line.contentWidth = contentWidth;
                line.contentHeight = contentHeight;
                lines.push(line);
                linesContainer.addChild(line);
                line.init();
            }
            
            linesContainer.alpha = .02;
            linesContainer.x = -lineWidth/2;
            
            addEventListener(Event.ENTER_FRAME, enterFrameHandler);
        }

        public function draw() : void {
            if(i == 3){
                i = 0;
                newLight();
            }
            
            bmd.draw(linesContainer, matrix, color, null, rectangle);
            
            bmd.draw(container, matrix, color, null, rectangle);
            
            
            
            bmd.applyFilter(bmd, bmd.rect, new Point(0, 0), filter);
            bmd.applyFilter(bmd, bmd.rect, new Point(0, 0), filter);
            bmd.applyFilter(bmd, bmd.rect, new Point(0, 0), filter);
            bmd.applyFilter(bmd, bmd.rect, new Point(0, 0), filter);
            
            for each (line in lines){
                line.draw();
            }
            
            i++;
        }

        public function destroy():void {
        
        }    
        
        private function newLight():void {
            l = new Light();
            l.contentWidth = contentWidth;
            l.contentHeight = contentHeight;
            l.speedX = speedX;
            l.speedY = speedY;
            l.init();
            container.addChild(l);
        }

        private function enterFrameHandler(event : Event) : void {
            draw();
        }
            
    }
}

import flash.display.Sprite;
import flash.events.Event;

class Line extends Sprite {
    
    public var contentWidth:Number;
    public var contentHeight:Number;
        
    public var speed:Number;
    public var xInit:Number = 0;
    public var lineWidth:Number;
    
    private var X:Number;
    private var xTo:Number;
    private var angle:Number;
    
    public function init():void {
        X = xInit;
        xTo = contentWidth;
        angle = X*2;
    }
    
    public function draw():void {
                
        graphics.clear();
        graphics.lineStyle(1, 0x56DEF9,.6);
        graphics.moveTo(X+angle, -10);
        graphics.lineTo(X, contentHeight+10);    
        
        if (X >= contentWidth+lineWidth){
            X = 0;
            angle = 0;
        }

        X += speed;
        angle += speed;        
    }

    public function destroy():void {

    }    
}

class Light extends Sprite {

        public static const colors:Array = [0x54C6DC, 0xE2007E];

        public var contentWidth:Number;
        public var contentHeight:Number;
        
        public var speedX:Number;
        public var speedY:Number;
                
        private var h:Number;
        private var container:Sprite;
        private var targetX:Number;
        
        public function init():void {
            
            speedX = 60;
            speedY = 30;

            container = new Sprite();
            addChild(container);
                        
            container.graphics.clear();
            container.graphics.beginFill(colors[Math.round(Math.random()*(colors.length-1))], 1);
            container.graphics.drawCircle(0, 0, 10);
            container.alpha = .04;
    
            container.height = h = contentWidth/2;
            container.width = contentWidth/2 + Math.random()*(contentWidth/2);
            
            targetX = -contentWidth/2 +  Math.random()*(contentWidth*2);
            
            x = Math.random()*contentWidth; 
            y = contentHeight+h+Math.random()*contentHeight/2;

            addEventListener(Event.ENTER_FRAME, enterFrameHandler, false, 0, true);              
                  
        }

        public function draw():void {
            y -= speedY;
            x += (x-targetX)/speedX;
            if(y < -(h))
                destroy();
        }

        public function destroy():void {
            parent.removeChild(this);
            removeEventListener(Event.ENTER_FRAME, enterFrameHandler);
        }
                
        private function enterFrameHandler(event : Event) : void {
            draw();
        }

}