在编写 JavaScript 动画时,您当然会使用 setInterval(或重复的 setTimeout)进行循环。但是在 setInterval/setTimeout 调用中使用的最佳延迟是多少?
在.animate() 函数的jQuery API 页面中,用户“fbogner”说:
如果有人感兴趣:动画使用 setInterval 进行“渲染”,时间超过 13 毫秒。这是相当快的!Chrome 可能的最快间隔约为 10 毫秒。所有其他浏览器在大约 20-30 毫秒内“采样”。
知道 jQuery 是如何决定使用这个特定数字的吗?
开始赏金。我希望了解 Chromium 或 Firefox 背后源代码的人可以提供一些确凿的事实,这些事实可能会支持特定帧率的决定。或者可能是一系列动画(或框架)及其延迟。我相信这是进行一些研究的有趣机会。
有趣 - 我只是花时间查看 Google 的Pac-Man源代码,看看他们做了什么。他们设置了一系列可能的 FPS(90、45、30),从第一个开始,然后每帧检查帧的“慢度”(帧超过其分配时间的数量)。如果慢度超过 50 毫秒 20 次,帧率将下降到列表中的下一个 (90 -> 45, 45 -> 30)。似乎帧率永远不会提高,大概是因为游戏的生命周期如此短暂,以至于不值得为之编写代码。
哦,setInterval 延迟当然设置为 1000 / 帧率。事实上,他们确实使用了 setInterval 而不是重复的 setTimeouts。
我认为这个动态帧率功能非常简洁!