繁体   English   中英

使用原型困难引用功能

[英]difficulty referencing functions, using prototype

我正在使用gameloop开发HTML 5 Canvas游戏。

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

TypeError:对象[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();
}

编辑:我认为“这”是看文档而不是游戏对象,我不明白为什么或如何解决它

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);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM