检测标记时间轴内的当前帧

时间:2013-07-11 12:13:16

标签: actionscript-3 flash actionscript

我需要创建一个名为Swing的动画,只有当玩家点击空格键时才会进行一次。我的播放器标记了时间线,其中每个标签都是从AC3调用的,并且用新的标签交换当前标签,我面临的问题是我只需要使用mc一次,一旦完成它就会返回到空闲标签。我试图检查当前帧但它是'1'而没有增加,也使用了所有解决方案:

stopping on the last frame (flash)

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

更多插图:

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

有什么想法吗?

1 个答案:

答案 0 :(得分:2)

因此,我从您的图片中看到,您实际上需要检查player.totoswing.currentFrame的帧,但在此之前请确保播放器中存在totoswing MovieClip。如果玩家的currentFrame不是5,则可能不存在。

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

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

如果你想在最后一帧停止它,你可以在totoswing MovieClip的最后一帧添加stop() scirpt。

如果您想知道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侦听器,因此我们将其删除。