3/20/2011

as3 playback test by onenterframe



package {
    import flash.display.MovieClip;
    import flash.events.MouseEvent;
    import flash.events.Event;
    import src.PlayBackMovieClip;
    //匯入奶綠自定的ChildMovieClip類別
    public class A03_privatePublicDemo extends MovieClip {

      
         public function A03_privatePublicDemo():void
        {
            _mc2.stop();
            _mc.stop();
            _mc.addEventListener(MouseEvent.ROLL_OVER, onEventRollOver);
            _mc.addEventListener(MouseEvent.ROLL_OUT, onEventRollOut);
            _mc2.addEventListener(MouseEvent.ROLL_OVER, onEventRollOver);
            _mc2.addEventListener(MouseEvent.ROLL_OUT, onEventRollOut);
            //偵聽      
      
    }
     private function onEventRollOut(event:MouseEvent):void {          
            event.currentTarget.playBack();
            //當滑鼠移出時, 讓 _mc 物件執行我們新增的倒退播放效果
            //執行我們在 PlayBackMovieClip 類別中自訂的 playBack() 方法          
        }
      
      private function onEventRollOver(event:MouseEvent):void {
            //當滑鼠移入時, 讓 _mc 物件開始播放
            event.currentTarget.play();
        }
}
}
//original code by 奶綠茶
//**使用playback 的元件要匯出給as使用, 路徑src.PlayBackMovieClip

------------------分格線---------------------
//奶綠寫的playback.as

package src {
    //設定類別包路徑為src。
    import flash.display.MovieClip;
    //匯入MovieClip類別。
    import flash.events.Event;
    //匯入Event類別。
    public class PlayBackMovieClip extends MovieClip {       
        //PlayBackMovieClip類別, 繼承MovieClip類別。
        public function PlayBackMovieClip() {                       
            //建構函式, 被建構時讓影格停止。
            this.stop();
            this.addFrameScript(9, _addFrameScript10);
            //addFrameScript(影格數:uint , 新增的函式:Function);
            //是MovieClip類別擁有的方法。
            //能動態在指定的影格新增程式碼。
            //0表示第一個影格,1表示第二個影格,依此類推。           
        }
       
        private function _addFrameScript10():void{
            stop();
            //在影格10的地方, 增加程式碼stop();
        }
        public function playBack():void {
            //新增一個新方法playBack();
            //設定成public公開的, 這樣其他的類別才能呼叫。
            this.addEventListener(Event.ENTER_FRAME, onEventEnterFrame);
            //偵聽EnterFrame事件。
        }       
        private function onEventEnterFrame(e:Event):void {
            //偵聽者函式, 不需要給其他類別呼叫
            //所以設定成private私有的即可。
            if (this.currentFrame == 1) {
                //如果現在的影格等於1,
                //取消偵聽事件。
                this.removeEventListener(Event.ENTER_FRAME, onEventEnterFrame);
            }else {
                //否則上一個影格。
                this.prevFrame();
            }
        }
    }
}

No comments:

Post a Comment