据我了解,JS requestAnimationFrame API的使用旨在用于不需要控制帧速率的情况,但是我有一个用例,即必须以特定的fps间隔更新<canvas>,该fps间隔可以是任意位置在1到25之间(即每秒1到25帧之间)。然后,我可以以某种方式仍然有效地使用rAF进行优化吗?

This question与我的相似,但是在该问题的上下文中,在那里接受的答案对我来说几乎为零。

我对此有两种可能的解决方案。第一个涉及在调用回调之前,使用while循环将脚本的执行暂停指定的延迟。在我看到的示例中,它有效地限制了动画的fps,但似乎也减慢了整个选项卡的速度。这实际上仍然是一个好的解决方案吗?正如我在上面链接的问题中所提到的,第二种选择是在requestAnimationFrame中调用requestAnimationFrame。对我来说,这似乎有些令人费解,但这可能是最好的选择?

还是有更好的选择来实现这一目标?

最佳答案

Yoshi的答案可能是此问题的最佳代码解决方案。但是我仍然会将此答案标记为正确,因为经过一些研究,我基本上发现我的问题是无效的。 requestAnimationFrame实际上是要保持尽可能高的帧速率,并且可以优化动画保持一致和流畅的场景。

不过,值得注意的是,由于浏览器仍在优化requestAnimationFrame的常规绘制,因此您不需要<canvas>来进行优化(即使rAF被吹捧为出色的性能提升器)。例如,当某个标签页未聚焦时,Chrome浏览器会停止绘制其 Canvas 。

所以我的结论是这个问题无效。希望这对那些想知道与我相似的人有所帮助。

关于javascript - 以有限的帧速率播放requestAnimationFrame,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/9308257/

10-11 23:38