我尝试创建一个可以启动该游戏的类,作为我的类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/