2013-06-06 40 views
0

我正在爲我製作的動畫創建一個木偶裝備。我創建了兩個從MovieClip類繼承的自定義類。一個是我正面向攝像機進行動畫製作的頭部,另一個是同一個頭部的3/4視圖。我修改這兩個構造函數添加一個事件偵聽器的MovieClip出現後調用函數facRig這有助於我通過調用其他功能,如moveEyes(), moveMouth()等動畫頭Actionscript 3代碼一幀延遲

public function _F__MichaelFULLHEAD() { 
    super(); 
    faceRig("OverLoad"); //<--bug workaround 
    this.gotoAndPlay(MovieClip(root).currentFrame); //Sync movieclips with timeline 
    addEventListener(Event.ENTER_FRAME,faceRig); 
} 

但是,函數總是被稱爲一幀在時間軸上。這種延遲使得動畫變得不可能,因爲我必須不斷地在前視圖和3/4視圖之間切換(我通過在時間線中創建新的關鍵幀並從庫中拖出符號來切換)。每次切換時都會有一幀,嘴巴不說話,眼睛也不動。

「bug解決方法」有點解決了這個問題。現在,任何一個頭部出現在舞臺上時,立即開始動畫,但如果從前視圖切換到3/4視圖回到前視圖,則前視圖會再次延遲。

我懷疑這可能是因爲構造函數不會再次所以我嘗試通過命名並frontHead1frontHead2在對象的屬性框,使獨特的頭的每個實例上運行,但它並沒有幫助的。

回答

0

我已經找到了答案,以我自己的問題:這違背

public function _F__MichaelFULLHEAD() { 
    super(); 
    //this.gotoAndPlay(MovieClip(root).currentFrame); << Moved this to inside faceRig 
    addEventListener(Event.ENTER_FRAME,faceRig); 
    addEventListener(Event.ADDED,faceRig); 
} 

顯然Event.ADDED運行之前Event.ENTER_FRAME什麼,我想我知道如何Event.ENTER_FRAME工作。現在一切都按原樣進行。