TransitionManager Blinds

by hacker_szoe51ih
♥0 | Line 136 | Modified 2010-09-27 23:43:47 | MIT License
play

ActionScript3 source code

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

package {
    import flash.utils.*
    import com.flashdynamix.motion.plugins.MovieClipTween;
    import flash.display.*;
    import flash.events.*;
    import flash.filters.DisplacementMapFilter;
    import flash.geom.Point;
    import flash.geom.Rectangle;
    import flash.net.*;
    import flash.system.*;
    
    import fl.transitions.*;
    import fl.transitions.easing.*;

    [SWF(width=465,height=465,backgroundColor=0xffffff,frameRate=45)]
    public class Main extends Sprite {
        
        public var photoBoxMC:MovieClip;
        public var lo:Loader;
        public var urlReq:URLRequest;
        public var pass0:String = "http://farm5.static.flickr.com/4146/5017161033_2a85566fde.jpg";
        public var pass1:String = "http://farm5.static.flickr.com/4087/5017767668_301dcd4985.jpg";
        public var pass2:String = "http://farm5.static.flickr.com/4090/5017767720_1f04f48074.jpg";
        public var passArray:Array;
        public var bmdArray:Array;
        public var photoArray:Array;
        public var photoNum:Number = 3;
        public var currentNum:Number = 0;
        public var W:Number = stage.stageWidth;
        public var H:Number = stage.stageHeight;
        public var button:MyButton;

        public function Main() {
            init();
        }
        
        public function init():void {
            button = new MyButton();  
            button.x = 215; 
            button.y = 400;  
            addChild(button);    
            passArray = new Array();
            photoArray = new Array();
            bmdArray = new Array();
            passArray = [pass0, pass1, pass2];
            urlReq = new URLRequest(passArray[0]);
            lo = new Loader();
            lo.contentLoaderInfo.addEventListener(Event.COMPLETE, onComplete);
            var mc:MovieClip = new MovieClip();
            mc.addChild(lo);
            photoArray.push(mc);
            var myLoaderContext:LoaderContext = new LoaderContext(true);
            lo.load(urlReq,myLoaderContext);
        }
        
        public function onComplete(e:Event):void {
                init2();
        }
        
        public function init2():void {
            bmdArray = null;//回数を図り終えたので破棄
            photoBoxMC = new MovieClip();
            photoBoxMC.addChild(photoArray[currentNum]);
            addChild(photoBoxMC);
            photoBoxMC.x = W / 2 - photoArray[currentNum].width / 2;
            photoBoxMC.y = H / 2 - photoArray[currentNum].height / 2;    
            button.addEventListener(MouseEvent.CLICK, onClick);
            currentNum += 1;
        }
                
        public function onClick(e:MouseEvent):void {
                button.removeEventListener(MouseEvent.CLICK, onClick);
                urlReq = new URLRequest(passArray[currentNum]);
                lo = new Loader();
                lo.contentLoaderInfo.addEventListener(Event.COMPLETE, onComplete2);
                var mc:MovieClip = new MovieClip();
                mc.addChild(lo);
                photoArray.push(mc);
                lo.load(urlReq);
        }
        
        public function onComplete2(e:Event):void {
                //次に表示する画像を先に挿入しておく
                photoBoxMC.addChild(photoArray[photoArray.length-1]);
                photoBoxMC.addChildAt(photoArray[photoArray.length-1], 0);
                transitFunc();
        }
                
        public function transitFunc():void {
            var transitionManager :TransitionManager = new TransitionManager(photoArray[photoArray.length-2]);
            transitionManager.startTransition({ type:Blinds, direction:Transition.OUT, duration:1, easing:Bounce.easeOut, numStrips:20, dimension:0 } );
            transitionManager.addEventListener("allTransitionsOutDone", timerComplete);
        }
        
        public function timerComplete(e:Event):void {
            //トランジションが完了したら一個前のMCを表示リストから外す
            photoBoxMC.removeChildAt(1);
            if (photoArray.length>photoNum-1) {//配列に写真が三枚以上になったら一番古いのを削除
                photoArray.shift();
            }
            setFunc();
        }
        
        public function setFunc():void {
            if (currentNum == photoNum - 1) {
                currentNum = 0;
            }else if(currentNum<photoNum){
                currentNum += 1;
            }
            button.addEventListener(MouseEvent.CLICK, onClick);
        }
        

    }


}

    import flash.display.*;
    import flash.events.*;
    import flash.text.TextField;
    import flash.text.TextFormat;

     class MyButton extends Sprite {
        
        public var box:Sprite;
        public var textField:TextField;
        public var textFormat:TextFormat;
        public var textSprite:Sprite;

        public function MyButton() {
            init();
        }
        
        public function init():void {
            textSprite = new Sprite();
            textField = new TextField();
            textFormat = new TextFormat();
            textFormat.font = "MS ゴシック";
            textFormat.size = 14;
            textFormat.color = 0x666666;
            textFormat.letterSpacing = 1;
            textField.defaultTextFormat = textFormat;
            textField.text = "click";
            box = new Sprite();
            box.graphics.beginFill(0xcccccc);
            box.graphics.drawRoundRect(0, 0, 45, 21,3,3);
            box.graphics.endFill();
            box.buttonMode = true;
            box.mouseEnabled;
            box.mouseChildren = false;
            addChild(box);
            box.x = 0;
            box.y = 0;
            box.addChild(textField);
            textField.x = 2;
            textField.y = 2;
        }
        
        
        
    }