gpt4 book ai didi

javascript - requestAnimationFrame 附加到 App 对象而不是 Window

转载 作者:行者123 更新时间:2023-11-28 02:41:25 25 4
gpt4 key购买 nike

我设置了以下jsFiddle http://jsfiddle.net/ZbhQY/4/

我使用一个小的requestAnimationFrame polyfill并将结果返回到window.reqeuestAnimFrame,这一切都工作正常,并且对此函数的所有调用都按预期工作。

如果我将其更改为返回到 game.reqeuestAnimFrame 并将所有对 window.reqeuestAnimFrame 的调用替换为新的 game.reqeuestAnimFrame ,它将不再起作用。

有人可以解释一下为什么会出现这种情况以及我可以做些什么来使这项工作正常进行吗?谢谢。

最佳答案

requestAnimationFrame 必须具有 window 上下文才能正常运行。

您可以将调用重写为:

game.requestAnimFrame.call(win, game.run);

它将按预期运行。

您遇到的错误是因为 requestAnimationFrame 期望其上下文 (this) 为 window,但其上下文却是 游戏

http://jsfiddle.net/ZbhQY/5/

或者,您可以像这样重写您的 requestAnimFrame getter:

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)

关于javascript - requestAnimationFrame 附加到 App 对象而不是 Window,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12591250/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com