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)预期调用。