我正在玩,requestAnimationFrame
但我在 Chrome 以外的任何其他浏览器中都得到了非常生涩的动画。
我创建一个这样的对象:
var object = function() {
var lastrender = (new Date()).getTime();
var delta = 0;
return {
update: function() {
//do updates using delta value in calculations.
},
loop: function() {
var looptimestamp = (new Date()).getTime();
delta = looptimestamp - lastrender;
lastrender = looptimestamp;
this.update();
window.requestAnimationFrame(this.loop.bind(this));
}
};
}
现在我只是在画布元素上绘制一个矩形并移动它。这是处理器上非常轻量级的操作。这在 Chrome 中运行得非常顺利,当我控制台记录 delta 值时,它几乎在 ~17 左右一致。但是,如果我在 Firefox 或 Safari 中执行相同操作,我会得到以下 delta 值:
17-3-17-2-32-34-32-31-19-31-17-3-0-14-3-14-35-31-16-3-17-2 ... and so on
看起来浏览器似乎没有很好地与显示器同步,并且在除 Chrome 之外的所有其他情况下,使用旧的 setTimeout 方法(将 16 毫秒作为目标超时)可以获得更流畅的动画。
有谁知道,是否可以requestAnimationFrame
在 Chrome 以外的浏览器中使用更流畅的动画?有没有人成功获得比 Firefox 上面发布的更稳定的 delta 值?