在Flash中测试和发布电影之间有巨大的帧速率差异?

在Flash中测试和发布电影之间有巨大的帧速率差异?,flash,actionscript-3,Flash,Actionscript 3,简单地说,我正在制作一个flash midi播放器。我正在使用ENTER_帧进行计时。我将帧速率设置为100,以确保以毫秒为单位的每个音符的计时是准确的 当我用CTRL+ENTER测试电影时,效果很好。当我发布它并在浏览器中打开它时(测试了IE和Chrome),它的播放速度突然慢了很多。我认为这不是性能问题,因为代码非常简单 如果这种减速是一致的,那么我也许可以使用它,以便播放速度将是正确的。浏览器是使帧速率变慢还是实现了某种帧速率上限?怎么回事?据我所知,浏览器确实为Flash和其他插件设置了

简单地说,我正在制作一个flash midi播放器。我正在使用ENTER_帧进行计时。我将帧速率设置为100,以确保以毫秒为单位的每个音符的计时是准确的

当我用CTRL+ENTER测试电影时,效果很好。当我发布它并在浏览器中打开它时(测试了IE和Chrome),它的播放速度突然慢了很多。我认为这不是性能问题,因为代码非常简单


如果这种减速是一致的,那么我也许可以使用它,以便播放速度将是正确的。浏览器是使帧速率变慢还是实现了某种帧速率上限?怎么回事?

据我所知,浏览器确实为Flash和其他插件设置了帧速率上限,以限制CPU的使用

您可以运行Doob先生的Stats类来查找每秒的确切帧速率()

对于您的midi播放器,如果您在时间轴上使用声音,如果您需要它来同步,最好将声音设置为“流”类型,如果您在播放前遇到间隙,则处理较低的声音质量


如果它不在时间线上,但您是从外部加载声音,您可以使用Firebug之类的工具来查看缓冲或加载声音文件所需的时间。

首先,这是一个很大的警告,在flash中几乎没有正确计时的方法。这是因为您几乎总是在UI线程中运行代码。UI线程负责渲染复杂帧可能需要一段时间的帧,从而使帧速率实际上下降。但是,在某些情况下,flash播放器渲染的帧数可能会减少,原因有很多。例如,许多浏览器倾向于为处于非活动选项卡或最小化窗口中的flash player实例(和其他插件)投入较少的资源。我不知道有哪款浏览器会故意让flash在活动选项卡/窗口中运行得更慢。可能会提供更多信息


现在,来解决你的实际问题。我建议您检查html中的嵌入代码,那里设置的帧速率值可能与您在电影中设置的帧速率值不同。这就是为什么它在独立播放机中的性能与预期一致,但在嵌入时却不一样。

我假设如果您发布它并在Flash player中打开它,它将按预期工作?您是对的,先生。我刚刚尝试在Flash player中打开发布的版本,其工作原理与按CTRL+ENTER键相同(即,它工作正常)。为什么不使用计时器而不是ENTER_FRAME?因为计时器的计时似乎非常不精确(不像单词所暗示的那样)。ENTER_FRAME给我带来了更好的结果。我不知道有哪种浏览器能够为在活动选项卡或窗口中运行的插件实现这样的资源上限。不过,为了节省资源,非活动选项卡或窗口的优先级通常较低。谢谢。你的回答似乎是正确的。我把帧率设置为50,现在结果是相等的。这又把我的计时搞砸了一毫秒,但还有更大的问题(在这篇文章中提到过),似乎使声音有点不一致。我认为浏览器将flash的最大帧速率限制为60,但我没有测试它以获得确切的数字。此外,flash播放器在最小化时确实会减速,但这不是一个大问题。我们的目标不是用背景音乐来娱乐人们。我在这里读到了关于帧速率的内容www.kaouratin.net/2006/05/frame-rates-in-flash-player.html,虽然这可能已经过时了……是的,它并不完全完美,但只要我没有做过太复杂的计算,使用ENTER_frame就非常接近了。我希望有更好的方法,但这似乎是最好的。