比requestAnimationFrame for JavaScript更好的动画方法



无论在哪里,我都能看到使用requestAnimationFrame的建议。没有人告诉你的是,Chrome会根据你的电源计划、你打开的标签数量和月亮的相位,将速度限制到48或30fps,而不会以任何方式通知你。不管你在做什么实际工作量,它都会这样做。

对于实际的动画,如果不是最佳的,这是可以的。您可以使用经过的时间生成一个新的动画帧,而与帧速率无关。

但对于模拟器这样的东西来说,这是不可接受的。

我使用的是SharedArray Buffers,所以我的JavaScript中已经包含了一些令人讨厌的头,可以让你使用一些额外的API。除了requestAnimationFrame,还有什么其他选择吗?或者有什么方法可以强制它至少达到60Hz?

没有其他选择,因为浏览器的绘制作业执行的次数与调用requestAnimationFrame回调的次数一样多(当您在每次下一次调用时都安排它(。因此,如果您以某种方式进行更多频繁的迭代,这将没有帮助,因为其中一些更改无法显示。

如果问题是关于定时,那么请意识到回调是用时间戳调用的,这可以帮助您进行实际的计算。这不会改变不断变化的帧速率,但至少可以让你知道已经过去了多少时间,并以此为基础进行计算,而不是基于调用回调的次数。

相关内容

  • 没有找到相关文章

最新更新