【发布时间】:2013-10-20 20:31:10
【问题描述】:
由于某种原因,星号行创建的 player_controller 实例变量不能在下面的 update 函数中调用。当我运行此代码时,第二个带星号的行(console.log)将识别并将指定变量从 player_controller 打印到控制台。但是,当我尝试在下面的更新函数(双星号行)中使用 player_controller 时,出现错误:“TypeError: this.player_controller is undefined.”
另请注意,如果粗体行被注释掉,其他行(具有类似创建的变量)运行不会出错。
谁能告诉我这里发生了什么?
function Engine(){
var GRAVITY = 0.3;
this.map_loader = new MapLoader();
*this.player_controller = new PlayerController();*
this.map = this.map_loader.load_next_map();
*console.log(this.player_controller.keys_down.A);*
this.update = function(){
**this.player_controller.handle_input(this.map.player);**
gravity(this.map.player);
this.map.player.x += this.map.player.dx;
this.map.player.y += this.map.player.dy;
...
...
编辑:没有意识到我不能在代码块中进行格式化。
这是应用程序的链接,如果您在此页面上查看 Web 控制台,您会看到我所说的堆积错误。 http://lukescode.net/senior_project_game/main.html
【问题讨论】:
-
您可能想创建一个SSCCE 来完美展示您的问题。
-
如何调用更新?这就是函数中
this值的决定因素。 -
update() 在使用
engine = new Engine()创建 Engine 对象后被engine.update()调用。 -
奇怪,应该可以。很遗憾,我现在无法检查您的链接(在 iPad 上,没有控制台)。
-
实际上 engine.update 是用
setInterval(engine.update, 1000/60)调用的,对此很抱歉。
标签: javascript function class variables public