3

我有一个播放动画的 15fps 基于 AS2 的在线系统。有成千上万的 AS2 swf 格式的外部加载动画。

我升级了主系统以使用 AS3 并以 60fps 运行,并相应地更新了它自己的嵌入式动画关键帧,使其间隔为原来的 4 倍,因此它们以 60fps 正常播放。

由于我无法更新从外部源加载的所有数千个单独的 15-fps AS2 动画,因此我必须按原样播放它们。实际上,我破解了字节流标头以强制它们作为 AS3 加载。它们可以正常加载和播放,但似乎主电影在播放时暂时降低了帧速率以匹配子电影。这导致它自己的动画显得非常缓慢(在其关键帧更新为以 60fps 观看后以 15fps 播放)。

起初我以为视频文件的处理速度变慢了,但现在我意识到较慢的子剪辑似乎导致播放器暂时降低其帧速率以匹配。任何人都可以确认这种暂时放缓或提出解决方法吗?

编辑:动画有“同步到流”的声音,我隐约记得读过一些例外,这会导致播放器在通常保持父加载器帧速率的地方放慢速度。

4

1 回答 1

1

Flash 不会间隔帧,并且您只有一个容器,因此 Flash 必须匹配所有帧速率。

解决方案有点困难:使用动作脚本控制帧速率。我向你解释这个想法:

  • 您必须创建一个 Timer 和一个 Array,Timer 的间隔将是加载的文件帧速率。如果它是每秒 15 帧,那么以秒为单位的间隔将为 1/15。

  • 您必须制作一个加载器来加载文件,停止它并将其推送到数组中。

  • 每次计时器滴答作响时,它都会循环所有 Array 对象并nextFrame在每个对象上执行,因此您可以以相同的帧速率拥有大量文件,但与主要电影不同。

就是这样,这是内部帧速率控制器的 CPU 消耗较少的模型。请记住,此模型适用于具有相同帧速率的文件,如果您对其进行修改,则可以对不同的帧速率执行相同操作。

另一种解决方案是将闪存中的所有文件修改为具有相同的帧速率,根据您的文件数量,我认为这个解决方案是最好的。

于 2012-09-06T23:22:01.793 回答