我需要制作一个名为 Swing 的动画,它只会在玩家按下空格键或其他东西时执行一次。我的播放器标记了时间线,其中每个标签都是从 AC3 调用的,并用新标签交换当前标签,我面临的问题是我只需要使用一次 mc,一旦完成,它就会回到空闲标签。我试图检查当前帧,但它是“1”并且没有增加,这里也使用了所有解决方案:
一点运气都没有。因为我不是在处理实际的 mc,所以我正在处理一个框架,框架内部是一个 mc。
更多插图:
http://i.imgur.com/CIoZu9l.png
有任何想法吗 ?
我需要制作一个名为 Swing 的动画,它只会在玩家按下空格键或其他东西时执行一次。我的播放器标记了时间线,其中每个标签都是从 AC3 调用的,并用新标签交换当前标签,我面临的问题是我只需要使用一次 mc,一旦完成,它就会回到空闲标签。我试图检查当前帧,但它是“1”并且没有增加,这里也使用了所有解决方案:
一点运气都没有。因为我不是在处理实际的 mc,所以我正在处理一个框架,框架内部是一个 mc。
更多插图:
http://i.imgur.com/CIoZu9l.png
有任何想法吗 ?
因此,正如我从您的图像中看到的那样,您实际上需要检查 的帧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监听器,所以我们将其移除。