[英]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.