我已经设置了以下的jsfiddle http://jsfiddle.net/ZbhQY/4/
即时通讯使用一个小requestAnimationFrame填充工具并返回结果window.reqeuestAnimFrame这一切工作正常,并预期此功能工作的所有调用。
如果我改变了返回game.reqeuestAnimFrame和替换所有调用window.reqeuestAnimFrame新game.reqeuestAnimFrame它不再起作用。
可能有人请解释为什么是这样的话,什么我可以为了使这项工作呢? 谢谢。
requestAnimationFrame
必须有一个上下文window
才能正常工作。
你可以重写你的电话为:
game.requestAnimFrame.call(win, game.run);
如预期它会起作用。
你正在运行到这个错误是因为requestAnimationFrame
预计其上下文( this
)是window
,而是它的背景是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)
如你所愿。