#actionscript-3 #listener #frame #movieclip
#actionscript-3 #прослушиватель #кадр #видеоролик
Вопрос:
У меня есть сцена с монстром. Монстр моргает глазами. Мигание глаз — это отдельный видеоролик. При некоторых условиях монстр открывает рот. Открытие рта также является отдельным видеороликом. В этот момент я должен скрыть глаза MovieClip. Как только монстр закроет рот, я должен снова сделать видимыми мигающие глаза.
Моя идея состоит в том, чтобы иметь некоторый слушатель, который слушает Mouth_opening MovieClip . Когда текущий кадр открытия рта изменится с 1 на 2, я спрячу глаза. Когда значение изменится с 2 на 1, я верну его обратно.
Итак, вопрос в том, как мне прослушивать изменения текущего кадра? Событие.ENTER_FRAME не подходит: он вызывается при каждом кадре рендеринга, а не только при изменении currentFrame.
Ответ №1:
В ActionScript нет события «frameChange», поэтому вам нужно создать свою собственную систему. Например, вы можете заставить его работать, прослушивая enterFrame
, а затем отслеживая текущий кадр, когда он изменяется, вызывая вашу функцию. Что-то подобное должно работать:
private var lastFrame:int = -1;
// Then add this in your constructor:
addEventListener("enterFrame", onEnterFrame);
private function onEnterFrame(event:*):void {
if (lastFrame != currentFrame) {
onFrameChanged();
lastFrame = currentFrame;
}
}
private function onFrameChanged():void {
trace("The frame has changed to " currentFrame);
}