Прослушиватель смены кадров видеоролика Actionscript 3.0

#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);
}