我在AS3中從一幀移動到另一個幀時試圖獲取事件。在AS3中移動到其他幀時退出事件
我試過EXIT_FRAME
它總是打電話。 我需要從一個框架移動到另一個時獲得狀態。
addEventListener(Event.EXIT_FRAME,exitfunc);
function exitfunc(e:Event):void{
trace("EXIT_FRAME");
}
我在AS3中從一幀移動到另一個幀時試圖獲取事件。在AS3中移動到其他幀時退出事件
我試過EXIT_FRAME
它總是打電話。 我需要從一個框架移動到另一個時獲得狀態。
addEventListener(Event.EXIT_FRAME,exitfunc);
function exitfunc(e:Event):void{
trace("EXIT_FRAME");
}
因爲他們的名字有誤導性。當播放頭退出某個幀時,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);
}
如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')
}
}
}
addFrameScript還會刪除以前在該框架中的任何代碼,因此它不是用於直接向框架添加代碼的人員的非常靈活的解決方案,因爲它是這種情況。 – BotMaster 2015-03-03 14:07:21
真正的缺點是之前完全刪除了添加到該幀的任何代碼,但爲什麼答案是-1?這取決於情況,如果這是一個問題。也許Vineesh TP已經知道沒有其他人正在向框架添加代碼? – 2015-03-03 15:15:47
只有一種好辦法,但可能超出你的技能水平。創建一個擴展MovieClip並覆蓋gotoAndStop和gotoAndPlay方法的類,然後讓它們派發一個自定義事件(不要忘記調用super)。該自定義事件可以攜帶框架標籤,索引等......您必須確保您的MovieClips/Document類實現該類,並且所有內容都將自動完成。 這將允許您跟蹤何時離開框架並通過調用gotoAndStop或gotoAndPlay移動到另一個框架。如果你只想跟蹤正常的播放頭移動,那麼ENTER_FRAME事件就足夠了。
如果有人只是打電話給myMovieclip.play(),或者沒有人向動畫片段調用'play,gotoAndPlay()或gotoAndStop()',並且在動畫片段的第一幀中沒有停止? Flash只是繼續循環動畫片段而不通知程序退出或輸入任何幀 – 2015-03-03 15:10:20
這就是爲什麼我說如果是這種情況,輸入幀就更適合這個目的。 – BotMaster 2015-03-03 16:55:17
你是什麼意思「從一個框架移動到另一個」?一個例子會有所幫助。 – 2015-03-03 09:45:44