据我了解,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/