Actionscript 3 检测标记时间线内的当前帧
我需要制作一个名为Swing的动画,当玩家点击空格键或其他东西时,它只会执行一次。我的播放器已经标记了时间线,其中每个标签都是从AC3调用的,并用新标签交换当前标签,我面临的问题是我只需要使用mc一次,一旦完成,它就会返回空闲标签。我试图检查currentframe,但它是“1”,并且没有增加,在这里也使用了所有解决方案: 一点运气都没有。因为我不是在处理一个实际的mc,我是在处理一个框架,框架内是一个mc 更多说明:Actionscript 3 检测标记时间线内的当前帧,actionscript-3,flash,actionscript,Actionscript 3,Flash,Actionscript,我需要制作一个名为Swing的动画,当玩家点击空格键或其他东西时,它只会执行一次。我的播放器已经标记了时间线,其中每个标签都是从AC3调用的,并用新标签交换当前标签,我面临的问题是我只需要使用mc一次,一旦完成,它就会返回空闲标签。我试图检查currentframe,但它是“1”,并且没有增加,在这里也使用了所有解决方案: 一点运气都没有。因为我不是在处理一个实际的mc,我是在处理一个框架,框架内是一个mc 更多说明: 有什么想法吗?所以我从你的图片中看到,你实际上需要检查player.to
有什么想法吗?所以我从你的图片中看到,你实际上需要检查
player.totoswing.currentFrame
的框架,但在你这样做之前,请确保tototoswing
电影剪辑存在于播放器中。如果播放机的currentFrame
不是5,则它可能不存在
因此,要检查动画的当前帧,请执行以下操作:
if(player.totoswing)
trace(player.totoswing.currentFrame);
如果要在最后一帧停止播放,可以在ToToToSwing MovieClip的最后一帧上添加一个stop()
scirpt
如果您想知道ToToToSwing动画何时结束,可以执行以下操作:
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
}
}
我们首先向
player.totoswing
MovieClip的ENTER\u FRAME
事件添加一个监听器,以便它每次推进一帧时都触发一个事件。在事件处理程序(ontoswingframe
)中,我们检查player.tooswing
当前帧是否等于其总帧,如果等于,我们停止播放,我们知道动画已经完成。我们不再需要一个ENTER\u FRAME
监听器,所以我们将其删除。currentFrame指的是放置此代码的MC的帧数,而不是动画中实际MC的帧数。尝试player.currentFrame(或任何与动画相关的对象)将不会像我提到的那样工作,请参见:如果我使用player.currentFrame,我将得到5。如果我做了totoswing,我将得到一个未定义的对象错误。谢谢,我不知道我可以在currentFrame之前添加“player.ToToToSwing”,现在一切对我都很好:)太好了!您可以使用点(.)操作符访问嵌套的DisplayObjects
和任何属性。