requestAnimationFrame连接到应用程序对象不窗口(requestAnimation

2019-10-17 06:44发布

我已经设置了以下的jsfiddle http://jsfiddle.net/ZbhQY/4/

即时通讯使用一个小requestAnimationFrame填充工具并返回结果window.reqeuestAnimFrame这一切工作正常,并预期此功能工作的所有调用。

如果我改变了返回game.reqeuestAnimFrame和替换所有调用window.reqeuestAnimFrame新game.reqeuestAnimFrame它不再起作用。

可能有人请解释为什么是这样的话,什么我可以为了使这项工作呢? 谢谢。

Answer 1:

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)如你所愿。



文章来源: requestAnimationFrame attached to App object not Window