所以我一直是一个优秀的网民,使用功能检测来查看浏览器是否支持requestAnimationFrame
,否则只能退回到setTimeout
基于 - 的解决方案(类似于Paul Irish 的著名帖子)。
var NOW = Date.now || function () { return new Date.getTime(); };
var reqAnimFrame =
window.requestAnimationFrame ||
window.webkitRequestAnimationFrame ||
/* ... || */
function (callback) {
setTimeout(function () { callback(NOW()); }, 1000 / 60);
};
var previousTime = NOW();
function animStep(time) {
var timePassed = time - previousTime;
myCharacter.move(myCharacter.speed * timePassed);
previousTime = time;
reqAnimationFrame(animStep);
}
// start the animation
reqAnimationFrame(animStep);
在 Internet Explorer 10 出现之前,这在任何地方都非常有效。在 IE10 中,time
传递的参数似乎与当前时间没有任何关系,搞砸了timePassed
.
这是怎么回事?