2010-02-11 96 views
0

當按下某些按鈕時,我想在舞臺上加載和加載mc。在按鈕按下時加載mc,並檢查mc是否正在運行

問題是,雖然其中一個MC正在播放,我不希望任何按鈕的工作 - 換句話說,用戶必須等待短暫的動作停止播放,然後再按另一個按鈕看另一個動畫(或者甚至是同樣的動畫)。

我很好,基本的AS2,但我想在AS3做到這一點。
attachMovie和removeMovieClip仍然是從AS3的庫中加載/卸載mc's的approp方法。
我也不確定如何檢查MC是否在AS3中播放(是否有屬性?或者可能設置全局變量?)。

任何想法??

回答

0

你想要的東西,如:

myBtn.addEventListener(MouseEvent.CLICK,onMyBtnClick) 

function onMyBtnClick(e:MouseEvent) 
{ 
    //TODO disable buttons 

    //export for actionscript setting in library 
    var myMovie:SomeMovieClipFromLibrary = new SomeMovieClipFromLibrary(); 
    addChild(myMovie); 
    myMovie.addEventListener(Event.ENTER_FRAME,onMovieEnterFrame); 
    myMovie.play(); 

} 

function onMovieEnterFrame(e:Event) 
{ 
    if(e.currentTarget.currentFrame ==e.currentTarget.totalFrames) 
    { 
    //TODO enable buttons 
    e.currentTarget.removeEventListener(Event.ENTER_FRAME,onMovieEnterFrame); 
    removeChild(e.currentTarget as DisplayObject); 

    } 

} 
+0

三江源 - 我用這個方法(它添加MC),除了我要去哪裏收到錯誤1118(靜態Object類型的值隱式強制爲可能無關的類型flash.display:DisplayObject)與代碼行的關係:removeChild(e.currentTarget); 有什麼想法? – 2010-02-11 09:52:30

+0

爲了克服我用removeChild(e.currentTarget)引用的問題,我使用addChildAt(myMovie,0)和removeChildAt(0)取得了一些成功。 使用一致的索引也確保了一次只能播放一個mc,這是我需要的另一個功能。 – 2010-02-11 10:42:53

+0

啊是的我認爲這個錯誤是因爲它應該是removeChild(e.currentTarget作爲DisplayObject)。我會編輯它來解決這個問題。請注意基於索引的移除,如果您碰巧添加其他顯示對象,則容易改變它們。如果您使用更新後的代碼並確保您啓用和禁用按鈕,那麼應該一次只播放一部電影(最後在離開工作時快速寫下這段代碼,最後對自己進行了測試:P) – Allan 2010-02-11 10:58:30