0

我需要制作一个名为 Swing 的动画,它只会在玩家按下空格键或其他东西时执行一次。我的播放器标记了时间线,其中每个标签都是从 AC3 调用的,并用新标签交换当前标签,我面临的问题是我只需要使用一次 mc,一旦完成,它就会回到空闲标签。我试图检查当前帧,但它是“1”并且没有增加,这里也使用了所有解决方案:

在最后一帧停止(闪光灯)

一点运气都没有。因为我不是在处理实际的 mc,所以我正在处理一个框架,框架内部是一个 mc。

更多插图:

http://i.imgur.com/CIoZu9l.png

有任何想法吗 ?

4

1 回答 1

2

因此,正如我从您的图像中看到的那样,您实际上需要检查 的帧player.totoswing.currentFrame,但在执行此操作之前,请确保totoswingMovieClip 存在于播放器中。currentFrame如果玩家不是 5,它可能不存在。

因此,要检查动画的当前帧,请执行以下操作:

if(player.totoswing)
    trace(player.totoswing.currentFrame);

如果您想在最后一帧停止它,您可以在stop()totoswing MovieClip 的最后一帧添加一个脚本。

如果您想知道 totoswing 动画何时结束,您可以执行以下操作:

if(player.totoswing)
{
    player.totoswing.addEventListener(Event.ENTER_FRAME, onTotoSwingFrame);
    player.totoswing.play();
}

function onTotoSwingFrame(e:Event):void
{
    if(e.target.currentFrame == e.target.totalFrames)
    {
        //animation has ended
        e.target.removeEventListener(Event.ENTER_FRAME, onToToSwingFrame);
        // do whatever you want. ex. play the idle state
    }
}

ENTER_FRAME我们首先为 MovieClip 的事件添加一个侦听器player.totoswing,以便它在每次前进一帧时触发一个事件。在事件处理程序(onTotoSwingFrame)中,我们检查player.totoswing当前帧是否等于其总帧数,如果是,我们停止播放并且我们知道动画已经完成。我们不再需要ENTER_FRAME监听器,所以我们将其移除。

于 2013-07-11T13:10:14.537 回答