我想让我的movieclip播放一次并停在最后一帧。我在movieclip类的循环中使用以下代码。 (这是as3)
if(currentFrame == 120)
stop();
120是最后一帧。它播放一次。但问题是它又回到了第1帧。是否有更好的方法来停止特定帧上的动画片段。
答案 0 :(得分:12)
如果你想用actionscript来做,而不是手动在时间轴上的最后一帧添加一个stop(),那么你可以使用未记录的addFrameScript()方法。
mc.addFrameScript(mc.totalFrames - 1, function():void
{
mc.stop();
});
不记得函数的范围,但你可以使用mc.stop(),也可以只使用stop()。
*编辑 - 将 -1 添加到addFrameScript的第一个参数,因为它基于零(所以将frameScript放在帧 10上你会把 9 。
答案 1 :(得分:3)
在时间轴上,您可以在最后放置一个关键帧,并在那里添加stop();
方法。当它到达那个帧时,stop();
方法将执行,剪辑将停止。
假设你正在使用时间轴,但听起来像你。
答案 2 :(得分:3)
最简单的方法:
选择后,只需在“Action-Frame”窗格中添加简单的stop()函数。
//add the following line to the actions pane of the last frame.
stop();
你已经完成了。如果需要,您可以选择添加重播按钮。
答案 3 :(得分:1)
这是因为对象被调用了两次。
答案 4 :(得分:0)
这似乎更符合您的要求:
addEventListener(Event.ENTER_FRAME, function(e:Event){
if(currentFrame == totalFrames){
stop();
removeEventListener(event.type, arguments.callee);
}
});
我添加了一个事件监听器(对于Actionscript 3),因此在每个帧上,此函数将触发并检查它所在的帧。如果它是最后一帧它将停止。根据你的例子,我假设你有一个扩展MovieClip的类。
答案 5 :(得分:0)
答案 6 :(得分:0)
我明白了。老实说,我认为我的申请存在缺陷。它奇迹般地工作,我没有做任何事情。在我的循环中,我做了if(currentframe == totalframes)以及之前没有发生的事情现在正好发生了。我不知道为什么。但就像我说的那样,这可能是一个软件问题,因为我有时会遇到通过构造函数传递值的问题。并且必须创建特殊方法来接受这些值。