我正在尝试创建一个类,可以启动这个游戏,作为我的类游戏的方法。正如您所看到的,我将请求动画帧添加为方法中的函数,但它给出了一个错误:'超出最大调用堆栈大小'
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);
};
})();
如果你知道我想要做什么,我就不会用,谢谢。
答案 0 :(得分:1)
我找到了答案,问题是当我打电话:'this.start'我将'window'称为'this',所以如果我把它保存为'那个'或'窗口'就会出问题,感谢大家,感谢他们。
var Game = function () {
this.anim = null;
}
Game.prototype.startAnimation = function(){
window.requestAnimFrame(this.startAnimation.bind(this));
}
var game = new Game();
game.startAnimation();
答案 1 :(得分:0)
Game.prototype.start = function () {
this.anim = requestAnimFrame( this.start() );
//code
}
对于requestAnimFrame( this.start() );
,您正在调用自身内部的开头,这会导致无限循环。
你应该尝试requestAnimFrame(this.start);
,即使它仍然看起来很奇怪:(。