requestAnimationFrame
必须有一个上下文window
才能正常运行。
您可以将调用重写为:
game.requestAnimFrame.call(win, game.run);
它将按预期运行。
您遇到的错误是因为requestAnimationFrame
期望它的 context( this
) 是window
,但它的 context 是game
。
http://jsfiddle.net/ZbhQY/5/
或者,您可以像这样重写您的requestAnimFrame
吸气剂:
game.requestAnimFrame = (function() {
var rAF = window.requestAnimationFrame || window.webkitRequestAnimationFrame || window.mozRequestAnimationFrame || window.oRequestAnimationFrame || window.msRequestAnimationFrame ||
function(callback) {
window.setTimeout(callback, 1000 / 60);
};
return function(callback){
rAF.call(window, callback);
};
})();
这将允许您按game.requestAnimFrame(game.run)
预期调用。