forked from: Texture

by t2421 forked from Texture (diff: 36)
♥0 | Line 102 | Modified 2011-11-01 00:44:44 | MIT License
play

ActionScript3 source code

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

// forked from t2421's Texture
package {
    import flash.events.Event;
    import flash.display.Sprite;
    public class Main extends Sprite {
        private var rect_arr:Array;
        private var texture:Texture;
        public function Main() {
            this.addEventListener(Event.ADDED_TO_STAGE,added2);
            trace("start");
            
        }
        
        private function added2(e:Event):void{
            texture = new Texture(stage.stageWidth,stage.stageHeight,new RectObject(),Param.OFFSET);
            addChild(texture);
        }
    }
}

import flash.events.TimerEvent;
import flash.utils.*;
import flash.display.Sprite;

class Texture extends Sprite{
    public function Texture(horizontalSize:Number,verticalSize:Number,object:Object,offset:Number,basePoint:Number=0){
         var hNum:uint = calcNumOfObj(horizontalSize,object.width,offset);
            var vNum:uint = calcNumOfObj(verticalSize,object.height,offset);
            var totalNum:uint = hNum*vNum;
            var hCount:uint = 0;
            var vCount:uint = 0;
            var className:Class = object.constructor;
            var delayCalls:Array=[];
            var rects:Array = [];
           
            
            if (i % hNum == 0 && i != 0){
                hCount = 0;
                vCount++;
            }
                
            for (var i:int = 0; i < totalNum; i++) 
            {
                var rect:RectObject = new className();
                if (i % hNum == 0 && i != 0){
                    hCount = 0;
                    vCount++;
                }
                rect.alpha = 0;
                rect.x = offset + basePoint + horizontalSize / hNum * hCount;
                rect.y = offset + basePoint + verticalSize / vNum * vCount;
                
                addChild(rect);
                rects.push(rect);
                rects[i].delayCall(1000*i);
                //delayCalls.push(new Delay(500,test));
                //delayCalls[i].excute();
               
                hCount++
            }
            function test():void{
                rects[i].alpha = 1;
            }

            
            
            function calcNumOfObj(totalSize:Number,objSize:Number,offset:Number):uint{
                var num:uint = totalSize / (objSize+offset);
                return num;
            }
        }
    }

    



class Param{
    public static const NUM_RECT:uint = 10;
    public static const OFFSET:Number = 20;
    public static const RECT_WIDTH:Number = 50;
    function Param(){
        
    }

}

import flash.utils.ByteArray;
class RectObject extends Sprite{
    private var delay:Number;
    function RectObject(w:Number=50,h:Number=50,c:uint=0x000000){
        this.graphics.beginFill(c);
        this.graphics.drawRect(-w/2,-h/2,w,h);
        this.graphics.endFill();
    }
    
    public function delayCall(delay:Number):void{
        this.delay = delay;
        var delayCall:Delay = new Delay(delay,doAlpha);
        delayCall.excute();
    }
    
    private function doAlpha():void{
        this.alpha=1;
        var delayCall:Delay = new Delay(delay,doRotate);
        delayCall.excute();
        
    }
    
    private function doRotate():void{
        this.rotation+=45;
    }



}

class Delay{
    private var delayTimer:Timer;
    private var callbackfunc:Function;
    function Delay(delay:Number,callback:Function){
        callbackfunc = callback;
        delayTimer = new Timer(delay,1);
        delayTimer.addEventListener(TimerEvent.TIMER_COMPLETE,completeHandler);
    }
    
    public function excute():void{
        delayTimer.start();
    }

    
    private function completeHandler(e:TimerEvent):void{
        delayTimer.removeEventListener(TimerEvent.TIMER_COMPLETE,completeHandler);
        callbackfunc();
    }


    
}