Actionscript 3.0 MovieClip слушатель смены кадра - PullRequest
3 голосов
/ 14 октября 2011

У меня есть сцена с монстром. Монстр моргает глазами. Мигающие глаза - это отдельный MovieClip. При некоторых условиях монстр открывает рот. Открытие рта также является отдельным MovieClip. В этот момент я должен скрыть глаза MovieClip. Как только монстр закроет рот, я должен снова сделать глаза видимыми.

Моя идея - иметь слушателя, который слушает MovieClip Mouth_opening. Когда currentFrame открытия рта изменится с 1 на 2, я скрою глаза. Когда он изменится с 2 на 1, я покажу его обратно.

Итак, вопрос такой: как мне прослушать изменения текущего кадра? Event.ENTER_FRAME не подходит: он вызывается каждый кадр рендеринга, а не только при изменении currentFrame.

1 Ответ

5 голосов
/ 14 октября 2011

В 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);
}
...