我尝试创建一个可以启动该游戏的类,作为我的类Game的一种方法。如您所见,我将请求动画帧添加为方法中的一个函数,但它给我一个错误:“超出了最大调用堆栈大小”

function Game(){
    this.player = null;
    this.anim = null;
}

Game.prototype.start = function () {
    this.anim = requestAnimFrame( this.start() );
    //code
}

Game.prototype.end = function() {
    cancelAnimFrame ( this.anim );
}

//create game
var game = new Game();

//start game
game.start();


如果我使用这个工作:

function render(){
    requestAnimFrame(render);
};
//start anim
render();


所以我不知道如果在方法内部什么是行不通的。

这是我使用的动画框架的代码:

window.requestAnimFrame = (function(){
return  window.requestAnimationFrame       ||
        window.webkitRequestAnimationFrame ||
        window.mozRequestAnimationFrame    ||
        window.oRequestAnimationFrame      ||
        window.msRequestAnimationFrame     ||
        function(callback,element){
            window.setTimeout(callback, 1000 / 60);
        };
})();

window.cancelAnimFrame = (function(){
return  window.cancelAnimationFrame       ||
        window.mozCancelAnimationFrame ||
        function(callback,element){
            window.setTimeout(callback, 1000 / 60);
        };
})();


我不使用,如果你知道我想做什么,谢谢。

最佳答案

我找到了答案,问题是当我将“ window”引用为“ this”时调用:“ this.start”时,如果我将其另存为“ that”或“ window”,然后执行它,问题就出了。 ,谢谢大家。

var Game = function () {
    this.anim = null;

}

Game.prototype.startAnimation = function(){
    window.requestAnimFrame(this.startAnimation.bind(this));
}

var game = new Game();
game.startAnimation();

关于javascript - '超出了最大调用堆栈大小'AnimationFrame,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/34263002/

10-11 21:00