2015-03-03 77 views
0

我在AS3中從一幀移動到另一個幀時試圖獲取事件。在AS3中移動到其他幀時退出事件

我試過EXIT_FRAME它總是打電話。 我需要從一個框架移動到另一個時獲得狀態。

addEventListener(Event.EXIT_FRAME,exitfunc); 
function exitfunc(e:Event):void{ 
trace("EXIT_FRAME"); 
} 
+1

你是什麼意思「從一個框架移動到另一個」?一個例子會有所幫助。 – 2015-03-03 09:45:44

回答

0

因爲他們的名字有誤導性。當播放頭退出某個幀時,Event.EXIT_FRAME不會執行一次。它重複執行。

同樣,Event.ENTER_FRAME在播放頭進入幀時不會執行一次。它重複執行。

在播放頭通過將函數調用到框架進入一個幀可以執行的函數:

F(); //當播放頭進入此幀時,附加到幀的幀將調用函數f。還有其他方法可以做到這一點。

當播放頭通過無效階段和使用當執行一個goto渲染事件存在的幀可以執行的函數:

stage.invaidate(); 
this.addEventListener(Event.RENDER,ExitingF); 
this.gotoAndPlay('whatever'); 
function exitingF(e:Event):void{ 
    // this code executes when this frame is exited and 'whatever' is rendered 
    (=displayed); 
} 
1

如Nagarajan sugges,可以動態添加腳本的幀。

例如,在主類

package { 
    import flash.display.MovieClip; 

    public class Test extends MovieClip 
    { 
     public function Test() 
     { 
      this.addFrameScript(4,frameFunction); // (add script to frame 5, zero based) 
     } 

     private function frameFunction():void { 
      trace ('Do something when play head enters frame 4') 
     } 
    } 
} 
+1

addFrameScript還會刪除以前在該框架中的任何代碼,因此它不是用於直接向框架添加代碼的人員的非常靈活的解決方案,因爲它是這種情況。 – BotMaster 2015-03-03 14:07:21

+0

真正的缺點是之前完全刪除了添加到該幀的任何代碼,但爲什麼答案是-1?這取決於情況,如果這是一個問題。也許Vineesh TP已經知道沒有其他人正在向框架添加代碼? – 2015-03-03 15:15:47

-3

只有一種好辦法,但可能超出你的技能水平。創建一個擴展MovieClip並覆蓋gotoAndStop和gotoAndPlay方法的類,然後讓它們派發一個自定義事件(不要忘記調用super)。該自定義事件可以攜帶框架標籤,索引等......您必須確保您的MovieClips/Document類實現該類,並且所有內容都將自動完成。 這將允許您跟蹤何時離開框架並通過調用gotoAndStop或gotoAndPlay移動到另一個框架。如果你只想跟蹤正常的播放頭移動,那麼ENTER_FRAME事件就足夠了。

+1

如果有人只是打電話給myMovieclip.play(),或者沒有人向動畫片段調用'play,gotoAndPlay()或gotoAndStop()',並且在動畫片段的第一幀中沒有停止? Flash只是繼續循環動畫片段而不通知程序退出或輸入任何幀 – 2015-03-03 15:10:20

+0

這就是爲什麼我說如果是這種情況,輸入幀就更適合這個目的。 – BotMaster 2015-03-03 16:55:17

相關問題