Safari 5.1及更早版本的浏览器不提供requestAnimationFrame
功能,这对于使用基于JavaScript的动态定位的某些应用程序至关重要。 setInterval
不是一个令人满意的替代品,因为它缺少更新和渲染之间的同步。如何在这些浏览器上正确模拟requestAnimationFrame
?
答案 0 :(得分:1)
我认为你没有其他选择而不是计时器。如果您想避免setInterval
之前可能丢帧,请使用setTimeout
,并每次从回调开始新的超时:
function renderFrame() {
// do stuff
setTimeout(renderFrame, 1000/30);
}
renderFrame();
实际上,我的第一句话并不准确。 Google搜索向我展示了其他选项,例如a timestamp-based solution和another one that uses both timestamps and setTimeout。