【问题标题】:Flash animation -- how can I stop looping and remain on the last image/frame?Flash 动画——如何停止循环并保持在最后一个图像/帧上?
【发布时间】:2011-12-08 21:07:14
【问题描述】:

我是 Flash 新手,无法让 FLA 动画在最后一帧停止。我在 Actionscript 中使用了“stop()”命令,但是如果我插入空白关键帧,此命令要么 (i) 停止动画并转到空白的白色帧(可能是动画的第一帧),或者 (ii)如果我插入一个常规的关键帧,无论如何都会循环。

我正在使用最新版本的 Flash 上重建的 FLA 文件(即反编译的 SWF 文件)。除了 Actionscript,我还尝试调整发布设置(例如,取消选中“循环”并将 Flash 版本设置为 7 或 8)并编辑嵌入参数(如 Stack 上的另一个答案中所建议的那样),但是这些努力似乎都没有有所作为。

任何帮助将不胜感激 - 谢谢!

【问题讨论】:

  • 对此有任何消息吗?我对“addFrameScript”的看法是对的吗?

标签: flash animation flash-cs3


【解决方案1】:

舞台上有短片吗?

您应该知道每个影片剪辑都有自己的时间线,因此要停止该特定影片剪辑的动画,应将stop(); 放置在该影片剪辑时间线中的适当关键帧内。..

【讨论】:

  • 感谢您的回复。正如我上面所说,我已经放置了“stop();”命令在最后一个关键帧中,但是虽然这可以防止动画循环,但它也会让我的动画显示一个空白的白色帧(大概是我的动画中的第一帧),而不是保留在最后一帧(图像)上。有什么建议吗?
  • 如果是这种情况,源代码中可能会发生其他事情 - 在重新启动 MovieClip 的最后一帧之后运行的异步回调。尝试将代码添加到最后一帧并插入断点,然后在调试器中运行内容(SHIFT + CTL + ENTER)。尝试将测试形状添加到第一帧(只需绘制一个矩形),以确定当 MovieClip 表面上重新启动时播放头的位置。还要确保其他图层的时间轴上没有(甚至是空白)内容。
  • ... 超过“stop()”命令。反编译器可能很棘手,尤其是在有多个源文件的情况下。查看时间轴上可能调用“addFrameScript”的任何代码 - 这个未记录的函数允许您(使用第一帧上的代码)编写将在最后一帧运行的脚本。
【解决方案2】:

有几种方法可以做到这一点。最简单的方法(如建议的“user559142”)是在该 MovieClip 时间轴的最后一帧上放置一个“stop()”命令。只需将其添加到最后一帧即可。

不幸的是,当影片剪辑到达最后一帧时,它们不会发送 COMPLETE 事件;在我看来,平台的一个缺点。确保您的 MovieClip 在最后一帧停止的更重要的方法是侦听 ENTER_FRAME 事件,并在当前帧等于最后一帧时调用 stop(),如下所示:

your_movie_clip.addEventListener(Event.ENTER_FRAME, function(e:Event):void 
{
   if (your_movie_clip.currentFrame == your_movie_clip.totalFrames)
   {
      your_movie_clip.stop(); 
   }
});

但是,请注意,如果您取消选中“循环”,您只会在 SWF 在 HTML 包装器中发布(和查看)时看到内容不循环,即使这样,只有当您尝试的内容停止循环出现在主时间线上。如果您只是在创作环境中进行预览,或者您的内容有自己的时间线以防止循环播放,您将看不到这种行为。

【讨论】:

    【解决方案3】:

    请关注代码

    <param name='loop' value='false' />
    <object type='application/x-shockwave-flash' data='sourcefile' width='300' height='120' loop='false'>
    

    这很好用

    【讨论】:

      猜你喜欢
      • 2012-05-17
      • 2020-01-23
      • 2016-07-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多