我希望我的动画片段播放一次并在最后一帧停止。我在我的movieclip类的循环中使用以下代码。 (这是as3)在最后一帧停止(闪光灯)
if(currentFrame == 120)
stop();
120是最后一帧。它只播放一次。但问题是它又回到第1帧。有没有更好的方法来停止特定帧上的动画片段。
我希望我的动画片段播放一次并在最后一帧停止。我在我的movieclip类的循环中使用以下代码。 (这是as3)在最后一帧停止(闪光灯)
if(currentFrame == 120)
stop();
120是最后一帧。它只播放一次。但问题是它又回到第1帧。有没有更好的方法来停止特定帧上的动画片段。
这是因为对象被调用了两次。
在时间轴上,您可以在最后放置一个关键帧,然后在那里添加stop();
方法。当它到达该帧时,将执行stop();
方法,并且剪辑将停止。
假设您使用的是时间轴,但听起来像是你。
我正在使用附加到动画片段的自定义类。我想从那里做,但如果我不能,我想我必须解决你的解决方案。 – numerical25 2010-01-20 13:59:42
我给了一个尝试,它没有工作。它仍然从第1帧开始。我追溯了当前的框架。显示它可以追溯到1 – numerical25 2010-01-20 14:09:08
嗯,这意味着还有其他事情正在发生。您是否使用嵌套的动画片段来创建动画?它们是否被正确停止?也许如果你能分享更多关于你如何设置事物的信息,我们可以帮助你追踪它。 – 2010-01-20 17:33:42
这似乎是沿着你要找什么线条更:
addEventListener(Event.ENTER_FRAME, function(e:Event){
if(currentFrame == totalFrames){
stop();
removeEventListener(event.type, arguments.callee);
}
});
我添加了一个事件侦听器(针对ActionScript 3)等每一帧此功能将火和检查什么镜框上。如果它是最后一帧,它将停止。基于你的例子,我假设你有一个扩展MovieClip的类。
这会工作,但在性能方面却是一个相当差的解决方案。这个框架将继续开火,无法清理。与此类似的更好的动态解决方案是使用addFrameScript方法。当然,如果你有一个函数的参考,你可以清理它,它会没事的。 – 2010-01-20 05:51:55
我同意泰勒。匿名功能也很糟糕,因为他们在进入gc之前已经长时间呆在内存中了。 – alecmce 2010-01-20 07:42:20
所以我想timeline中的stop()函数是要走的路。我实际上为我的所有动画片段使用了一个单一的循环,所以我宁愿它不在事件监听器中。感谢您的回复球员 – numerical25 2010-01-20 14:02:30
从乱搞机智它,我知道这个问题与Flash没有响应我的stop()函数无关。我相信这可能与Flash两次调用动画片段有关。一个在另一个之上。让它看起来像重新开始。我不确定。如果我在其他地方调用动画片段,它就可以工作。只是不在我的循环。我确实做了一次追踪,追踪只显示一次,这表明它启动了一次。
如果您想使用actionscript来完成此操作,而不是手动向时间轴上的最后一帧添加stop(),那么您可以使用未公开的addFrameScript()方法。
mc.addFrameScript(mc.totalFrames - 1, function():void
{
mc.stop();
});
不记得功能的范围,但可以使用mc.stop()或stop()。
*编辑 - 新增-1到addFrameScript的第一个参数,因为它是基于零(所以把一个frameScript上框架你会把)。
你是一个拯救生命的人!我甚至没有考虑在时间线上添加停止,只是在需要时调用'play()'。 – 2016-01-10 03:46:19
我想通了。老实说,我认为我的申请是有缺陷的。它奇迹般地工作,我什么也没做。在我的循环中,我做了if(currentframe == totalframes),以前没有发生什么现在正在发生完美。我不知道为什么。但正如我所说,这可能是一个软件问题,因为我有时会遇到通过构造函数传递值的问题。并且必须创建特殊的方法来接受这些值。
最简单的方法:
选择后,只需在'Action-Frame'窗格中添加简单的stop()函数即可。
//add the following line to the actions pane of the last frame.
stop();
你完成了。如有需要,您可以选择添加重播按钮。
你最终找到了正确的答案吗?如果是这样,请将其标记为正确 – 2012-01-10 07:41:53