停在最后一帧(闪光灯)

时间:2010-01-20 04:31:40

标签: actionscript-3 flash

我想让我的movieclip播放一次并停在最后一帧。我在movieclip类的循环中使用以下代码。 (这是as3)

if(currentFrame == 120)
stop();

120是最后一帧。它播放一次。但问题是它又回到了第1帧。是否有更好的方法来停止特定帧上的动画片段。

7 个答案:

答案 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)

最简单的方法:

  1. 只需选择时间轴中的最后一帧即可。打开“操作”窗格(F8)。确保仍然选中所选框架,如果没有,则在“操作”窗格打开时再次选择。
  2. 选择后,只需在“Action-Frame”窗格中添加简单的stop()函数。

    //add the following line to the actions pane of the last frame.
    stop();
    
  3. 你已经完成了。如果需要,您可以选择添加重播按钮。

答案 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)

从搞乱它的角度来看,我知道问题与闪存没有响应我的stop()函数无关。我相信这可能与flash两次调用movieclip有关。一个在另一个之上。让它看起来像重新开始。我不确定。如果我在其他任何地方调用movieclip,它就可以了。只是不在我的循环中。我做了一个跟踪,跟踪只显示一次,显示它启动了一次。

答案 6 :(得分:0)

我明白了。老实说,我认为我的申请存在缺陷。它奇迹般地工作,我没有做任何事情。在我的循环中,我做了if(currentframe == totalframes)以及之前没有发生的事情现在正好发生了。我不知道为什么。但就像我说的那样,这可能是一个软件问题,因为我有时会遇到通过构造函数传递值的问题。并且必须创建特殊方法来接受这些值。