0

我正在开发带有游戏循环的 HTML 5 Canvas 游戏。

到目前为止,这是我的代码。它什么也没做,这很好,但我收到一个错误

TypeError: Object [object DOMWindow] has no method '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 对象,我不明白为什么或如何修复它

4

1 回答 1

1

问题可能与以下行有关GameLoop

setTimeout(this.GameLoop, 10);

您不能传递“方法”引用;只有函数引用。因此,当 this 由 调用时setTimeout,它将在没有设置上下文的情况下调用,就像您将其称为:

GameLoop();

你必须要么bind

setTimeout(this.GameLoop.bind(this), 10);

或者将其包装在另一个类似于bind将要执行的函数中(另存thisself函数将具有自己的值this):

var self = this;
// ...
setTimeout(function () {
    self.GameLoop();
}, 10);
于 2012-07-31T17:24:27.523 回答