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

CalendarTimelapse

Get Adobe Flash player
by RamiroEspada 28 Oct 2010
    Embed
package {
    import flash.geom.Rectangle;
    import flash.display.StageAlign;
    import flash.display.StageScaleMode;
    import flash.display.Sprite;
    import caurina.transitions.Tweener;
    import flash.events.Event;
    
    /**
     * @author Ramiro Espada
     * @author http://www.molamil.com
     */
     
    public class CalendarTimelapse extends Sprite {
        
        public var timeTransitionSpeed:Number = 5;
        public var years:Number = 5;
        public var transitionTime:Number;
        
        private var transitionDate:Date;
        private var today:Date;
        private var tomorrow:Date;
        private var calendar:Array;
        private var calendarContainer:Sprite;
        private var day:TextHolder;
        private var month:TextHolder;
        private var year:TextHolder;
        private var div1:TextHolder;
        private var div2:TextHolder;
        private var textHolder:TextHolder;
        private var calendarArea:Rectangle;
        private var background:Sprite;
        
        public function CalendarTimelapse() {
            init();        
        }

        public function init():void {
            
            stage.scaleMode = StageScaleMode.NO_SCALE;
            stage.align = StageAlign.TOP_LEFT;
            
            background = new Sprite();
            addChild(background); 
                       
            stage.addEventListener(Event.RESIZE, stageResizeHandler); 
                       
            today = new Date();
            transitionTime = today.time;
            transitionDate = new Date(today.getFullYear(), today.getMonth(), today.getDate(), today.getHours(), today.getMinutes(), today.getSeconds(), today.getMilliseconds());
            tomorrow = new Date(today.getFullYear() + years, today.getMonth(), today.getDate(), today.getHours(), today.getMinutes(), today.getSeconds(), today.getMilliseconds());
            
            trace('today: ' + (today.time));
            trace('tomorrow: ' + (tomorrow.time));
            
            calendarContainer = new Sprite();
            addChild(calendarContainer);
            
            div1 = new TextHolder();
            div1.content = " / ";
            div1.init();
            calendarContainer.addChild(div1);    

            div2 = new TextHolder();
            div2.content = " / ";
            div2.init();
            calendarContainer.addChild(div2);            
            
            day = new TextHolder();
            day.name = "day";
            day.content = formatDate(""+Number(transitionDate.getDate()));
            day.init();
            calendarContainer.addChild(day);

            month = new TextHolder();
            month.name = "month";
            month.content = formatDate(""+Number(transitionDate.getMonth()+1));
            month.init();
            calendarContainer.addChild(month);

            year = new TextHolder();
            year.name = "year";
            year.content = ""+transitionDate.getFullYear();
            year.init();
            calendarContainer.addChild(year);
            
            calendar = new Array(day, div1, month, div2, year);

            var i:int = 0;
            for each(textHolder in calendar){
                if(i != 0)
                    textHolder.x = TextHolder(calendar[i-1]).x + TextHolder(calendar[i-1]).width+1;
                    
                i++;
            }
            
            calendarArea = new Rectangle(0,0, calendarContainer.width, calendarContainer.height);
            
            draw();
                                             
            Tweener.addTween(this, {transitionTime:tomorrow.time, time:timeTransitionSpeed, onUpdate:update, onComplete:update, transition:"linear"});
    
        }
        
        public function update():void {
            
            transitionDate.time = transitionTime;
            
            if(formatDate(""+Number(transitionDate.getDate())) != day.content){
                day.content = formatDate(""+Number(transitionDate.getDate()));
                day.draw();
            }
        
            if(formatDate(""+Number(transitionDate.getMonth()+1)) != month.content){
                month.content = formatDate(""+Number(transitionDate.getMonth()+1));
                month.draw();            
            }

            if ("" + transitionDate.getFullYear() != year.content){
                year.content = ""+transitionDate.getFullYear();
                year.draw();            
            }
            
        }

        public function destroy():void {
        
        }    
        
        private function draw():void {
            
            calendarContainer.x = stage.stageWidth/2 - calendarArea.width/2;
            calendarContainer.y = stage.stageHeight/2 - calendarArea.height/2;     
            
            background.graphics.beginFill(0x222222,1);
            background.graphics.drawRect(0,0,stage.stageWidth, stage.stageHeight);
        }
    
        private function formatDate(date:String):String {
            
            var n:String = date;
            
            if(date.length <= 1)
                n = "0"+date;
            
            return n;s
        }
        
        private function stageResizeHandler(event:Event):void {
            draw();
        }
        
    }
}
import caurina.transitions.Tweener;
import flash.display.Bitmap;
import flash.display.BitmapData;
import flash.display.Sprite;
import flash.display.Shape;
import flash.text.TextFormatAlign;
import flash.text.TextFormat;
import flash.text.TextFieldAutoSize;
import flash.text.TextField;

class TextHolder extends Sprite {
    
    public var content:String;
    
    private var textField:TextField;
    private var background:Shape;
    private var container:Sprite;
    private var isfirstDraw:Boolean;
        
    public function init():void {
        
        container = new Sprite();
        addChild(container);
        
        background = new Shape();
        container.addChild(background);
                
        var format:TextFormat = new TextFormat();
        format.size = 40;
        format.align = TextFormatAlign.LEFT;
        format.font = "Helvetica";
        
        textField = new TextField();    
        textField.autoSize = TextFieldAutoSize.LEFT;
        textField.defaultTextFormat = format;
        container.addChild(textField);
        
        isfirstDraw = true;
        
        draw();
    }
    
    public function draw():void {
        
        textField.text = content;        
        textField.x = 5;
        textField.y = 3;
        background.graphics.clear();
        background.graphics.beginFill(0x999999,1);
        background.graphics.drawRect(0, 0, textField.width+10, textField.height);
        
        if(!isfirstDraw){
            var piece:Piece = new Piece();
            piece.bmd = new BitmapData(Math.floor(background.width), Math.floor(background.height), false, 0xFFFFFF);
            piece.bmd.draw(container);
            piece.init();
            addChild(piece);
        }
        
        isfirstDraw = false;
    
    }

}

class Piece extends Sprite {

    public var bmd:BitmapData;
    
    private var bmp:Bitmap;
    
    public function init():void  {
        
        bmp = new Bitmap(bmd);
        addChild(bmp);
        
        x = bmp.width/2;
        y = bmp.height/2;
        
        bmp.x = -bmp.width/2;
        bmp.y = -bmp.height/2;
        
        scaleX = scaleY = .9;
        
        var rY:Number = 90;
        var rX:Number = Math.random()*90 - Math.random()*180;
        var rZ:Number = Math.random()*90 - Math.random()*180;
        var Y:Number = (height*2) + Math.random()*(height*3);
        var X:Number = Math.random()*200 - Math.random()*200;
        
        Tweener.addTween(this,{time:.4, rotationX:rX, rotationZ:rZ, rotationY:rY, alpha:0, y:Y, x:X, onComplete:destroy, scaleX:1.5, scaleY:1.5});

    }
    
    public function destroy():void {
        parent.removeChild(this);
    }

}