我有一个怪物的场景。怪物眨了眨眼睛。眨眼是一个单独的影片剪辑。
在某些情况下,怪物会张开嘴。嘴巴张开也是一个单独的 MovieClip。此刻我不得不隐藏眼睛MovieClip。怪物一闭上嘴,我就必须让眨眼的眼睛再次可见。

我的想法是让一些听众听 Mouth_opening MovieClip。当 Mouth opening 的 currentFrame 从 1 变为 2 时,我会隐藏眼睛。当它从 2 变为 1 时,我会显示回来。

所以,问题是:我如何监听 currentFrame 的变化?
Event.ENTER_FRAME 不合适:每个渲染帧都会调用它,而不仅仅是在 currentFrame 更改时。

最佳答案

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

10-08 06:57