2015-03-03 2 views
0

Я пытаюсь получить событие при переходе от одного кадра к другому в AS3.Выход из события при переходе на другой кадр в AS3

Я пробовал с EXIT_FRAME он всегда звонил. Мне нужно получить состояние при переходе от одного кадра к другому.

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

Что вы подразумеваете под «переходом от одного кадра к другому»? Пример поможет. –

ответ

0

потому что их имена вводят в заблуждение. Событие.EXIT_FRAME не выполняется один раз, когда игровая точка выходит из фрейма. он выполняется повторно.

Аналогично, событие.ENTER_FRAME не выполняется один раз, когда головка воспроизведения входит в кадр. он выполняется повторно.

можно выполнить функцию, когда точка воспроизведения переходит в кадр, добавив вызов функции к раме:

F(); // прикрепленный к кадру вызовет функцию f, когда головка воспроизведения войдет в этот кадр. и есть другие способы сделать это.

вы можете выполнить функцию, когда точка воспроизведения существует кадр недействительности сцены и с помощью визуализации события, когда Гото выполняются:

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

в Нагараджаной 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

+0

Истинный недостаток - это полное удаление любого кода, добавляемого к этому кадру раньше, но почему -1 для ответа? Это зависит от случая, если это проблема. Может быть, Vineesh TP знает, что еще никто не добавляет код в фрейм? –

-3

Там только один хороший способ, но это может быть за пределами вашего уровня мастерства. Создайте класс, который расширяет MovieClip и переопределяет методы gotoAndStop и gotoAndPlay, а затем просто посылает им настраиваемое событие (не забудьте вызвать супер). Это настраиваемое событие может содержать метку фрейма, индекс и т. Д. Вам нужно убедиться, что ваш класс MovieClips/Document реализует этот класс, и все будет сделано автоматически. Это позволит вам отслеживать, когда вы покидаете фрейм и переходите на другой с вызовом gotoAndStop или gotoAndPlay. Если вы хотите только отслеживать ход обычного воспроизведения, то достаточно события ENTER_FRAME.

+1

И что, если кто-то просто вызовет myMovieclip.play(), или никто не вызывает «play», gotoAndPlay() или gotoAndStop() в мувиклип, и нет остановки в первом кадре мувиклипа? Flash просто продолжит цикл мувиклипа без уведомления о выходе программы или в любом кадре –

+0

Вот почему я сказал, что если это так, то входной кадр лучше подходит для этой цели. – BotMaster

Смежные вопросы