Posted
Filed under Action Script
[원문] - http://www.flash8coders.com/zbxe/?mid=as30&document_srl=86410

BatchCode 를 3.0으로 포팅하는데 생각처럼 만만치가 않네요.
여기저기 물어보고 겁나게 삽질했습니다.
코드는 다소 바뀌었지만, 다행이 사용법은 2.0버젼이랑 동일하게 유지할 수 있었네요.
예제도 거의 같아요.





실행코드는 첨부파일이고 인터페이스 파일은 없습니다. 달랑 하나입니다.

이 데모의 소스는 다음과 같습니다. 2.0버젼이랑 거의 달라진게 없습니다.

package
{
        import com.greensock.easing.Bounce;
        import com.greensock.TweenLite;

        import flash.net.URLRequest;
        import flash.text.TextFieldAutoSize;
        import flash.text.TextField;

        import clickage.common.util.BatchCode;
        import clickage.common.util.ImageTransform;

        import flash.events.Event;
        import flash.display.Loader;
        import flash.display.Sprite;
        import flash.events.MouseEvent;
        import fl.controls.Button;

        /** comment  :
        * For example
        *
        * <pre>
        *
        *
        *
        * </pre>
        *
        * @author Cheol-Jin Eom
        * @date 2010. 5. 19.
        * @see
        *
        * ************************************** */


        public class ViewManager
        {
                private var main:Main;
                private var sptMain:Sprite;
                private var sptImageContainer:Sprite;
                private var sptFieldContainer:Sprite;
                private var loader:Loader;
                private var URI_IMAGE:String = "http://www.flash8coders.com/images/img3.jpg";


                public function ViewManager(main:Main)
                {
                        this.main = main;
                }

                public function start():void
                {
                        buildViews();
                }

                private function buildViews():void
                {
                        var btn:Button = main.getChildByName("btn") as Button;
                        btn.addEventListener(MouseEvent.CLICK, clickHandler);

                        sptMain = new Sprite();
                        main.addChild(sptMain);
                        sptImageContainer = new Sprite();
                        sptMain.addChild(sptImageContainer);
                        sptFieldContainer = new Sprite();
                        sptMain.addChild(sptFieldContainer);

                        loader = new Loader();
                        sptImageContainer.addChild(loader);

                        loader.contentLoaderInfo.addEventListener(Event.COMPLETE, handler_loaded_image);
                }

                private function clickHandler(event:MouseEvent):void
                {
                        // 초기화
                        loader.unload();
                        loader.x = 0;
                        if (sptFieldContainer.numChildren != 0) {
                                sptFieldContainer.removeChildAt(0);
                        }

                        // 배치실행 시작
                        excuteLinearProcess();
                }
                private function excuteLinearProcess():void
                {
                        var batch:BatchCode = BatchCode.getInstance();
                        batch.clearBatch(); // 안해도 되는데 걍 클리어해줬음, 시작할때가 아니라 마지막에 해도 괜찮을 듯
                        batch.onExcuteListener = function () {
                                batch.next();
                        };

                        batch.addBatch(this, this.loadImage, [URI_IMAGE]); // 1. 이미지를 로드하고, 이미지 로드가 완료되면
                        batch.addBatch(this, this.resizeOriginalRatio, [400, 400]); //2. 이미지의 사이즈를 조정하고
                        batch.addBatch(this, this.moveTo, [200]); // 3. 오른쪽으로 이동하는 트윈을, 트윈이 끝나면
                        batch.addBatch(this, this.addTitle, ["이미지 이동 완료"]); // 4. 완료가 됐다는 메시지를 찍어본다.
                        batch.addBatch(this, this.moveTextClip, [0, 10]); // 5. 이렇게 찍힌 텍스트클립을 좌상단으로 이동해본다.
                        batch.excuteBatch();
                }
                public function loadImage(uri:String):void
                {
                        loader.load(new URLRequest(uri));
                }

                private function handler_loaded_image(event:Event):void
                {
                        BatchCode.getInstance().onExcuteListener();
                }
                public function resizeOriginalRatio(boundWidth:Number, boundHeight:Number):void
                {
                        ImageTransform.transformToOriginalRatio(boundWidth, boundHeight, loader);
                        BatchCode.getInstance().onExcuteListener();
                }
                public function moveTo(pos:Number):void
                {
                        TweenLite.to(loader, 1, {x:pos, ease:Bounce.easeOut, onComplete:handler_complete_move});
                }
                private function handler_complete_move():void
                {
                        BatchCode.getInstance().onExcuteListener();
                }
                private function addTitle(msg:String):void
                {
                        var field:TextField = new TextField();
                        field.name = "field";
                        field.text = msg;
                        field.x = 0;
                        field.y = 0;
                        field.autoSize = TextFieldAutoSize.LEFT;
                        field.text = msg;
                        sptFieldContainer.addChild(field);
                        sptFieldContainer.x = 300;
                        sptFieldContainer.y = 350;

                        BatchCode.getInstance().onExcuteListener();

                }
                private function moveTextClip(x:Number, y:Number):void
                {
                        TweenLite.to(sptFieldContainer, 1, {x:x, y:y, ease:Bounce.easeOut});
                        BatchCode.getInstance().onExcuteListener();
                }

        }
}
2010/06/04 09:15 2010/06/04 09:15