我正在开发HTML 5 Canvas游戏,带有游戏循环。
到目前为止,这是我的代码。它没有做任何事情,这很好,但我收到了一个错误
TypeError:Object [object DOMWindow]没有方法'Update'[http:// localhost:2516 / scripts / lib / Game.js:47]
编辑:此代码有效,它不再反映问题,它反映了解决方案
var game;
var Game = function () {
}
Game.prototype.Update = function () {
}
Game.prototype.Draw = function () {
}
function GameLoop () {
game.Update(); //this is line 47
//context.save();
game.Draw();
// context.restore();
setTimeout(GameLoop, 10);
}
function Start() {
game = new Game();
GameLoop();
}
编辑:我认为“this”正在查看文档而不是Game对象,我不明白为什么或如何修复它
答案 0 :(得分:1)
GameLoop
setTimeout(this.GameLoop, 10);
您无法传递“方法”参考;只有功能参考。因此,当setTimeout
调用它时,将在没有设置上下文的情况下调用它,就像你将其称为:
GameLoop();
您必须bind
:
setTimeout(this.GameLoop.bind(this), 10);
或者将其包装在与bind
将要执行的操作类似的另一个函数中(将this
保存为self
,因为该函数将具有this
的自己的值:)
var self = this;
// ...
setTimeout(function () {
self.GameLoop();
}, 10);