这似乎是这个网站上的一个热门问题,但之前的答案并没有解决这个问题的实例。
我在node.js服务器上有一个游戏引擎的开头但是当我设置它时,我在loop
方法中发生了以下错误:Object #<Timer> has no method update
。
我以为我正在设置原型以使用GameEngine.prototype.update = function(){ ... };
非常感谢任何帮助解决这个问题。谢谢。
以下是整个代码:
function GameEngine(){
this.fps = 1000/60;
this.deltaTime = 0;
this.lastUpdateTime = 0;
this.entities = [];
}
GameEngine.prototype.update = function(){
for(var x in this.entities){
this.entities[x].update();
}
}
GameEngine.prototype.loop = function(){
var now = Date.now();
this.deltaTime = now - this.lastUpdateTime;
this.update();
this.lastUpdateTime = now;
}
GameEngine.prototype.start = function(){
setInterval(this.loop, this.fps);
}
GameEngine.prototype.addEntity = function(entity){
this.entities.push(entity);
}
var game = new GameEngine();
game.start();
答案 0 :(得分:7)
这似乎是本网站上的热门问题
是
但之前的答案并没有解决这个问题的实例。
真的?你找到了哪些?
当超时/事件监听器/等执行函数时,“方法”(this
)的上下文将丢失。
GameEngine.prototype.start = function(){
var that = this;
setInterval(function(){
that.loop();
}, this.fps);
}
或
GameEngine.prototype.start = function(){
setInterval(this.loop.bind(this), this.fps);
}