Phaser:this.game 在 Update 函数中未定义
Phaser: this.game is undefined in the Update function
晚上好,
抱歉再次询问,但我需要在明天上学之前完成这个。基本上,当我尝试访问更新函数中的 this.game 变量时,它说它是未定义的,具体来说,我明白了; "Uncaught TypeError: Cannot read property 'state' of undefined"。
在我的更新功能中,我有这个:
create: function() {
[...]
map.setCollisionByExclusion([], true, doorLayer);
[...]
}
当我尝试在碰撞动作的更新函数中访问 this.game 时,出现上述错误。
这是代码;
update: function() {
[...]
this.game.physics.arcade.collide(player, doorLayer, function() {
if (hasItem) {
this.game.state.start('Hallway'); //This is where I get the error
}
});
[...]
}
感谢您的宝贵时间。
this.game.physics.arcade.collide(player, doorLayer, function() {
if (hasItem) {
this.game.state.start('Hallway'); //This is where I get the error
}
});
注意内部 this
指的是您传递的匿名函数,它显然没有名为 game
.
的成员
理想情况下,将 this
重命名为其他名称,然后使用它。
现在您可以在传递的匿名函数中使用 myself
变量并访问 myself
的属性。
即
var myself = this;
晚上好, 抱歉再次询问,但我需要在明天上学之前完成这个。基本上,当我尝试访问更新函数中的 this.game 变量时,它说它是未定义的,具体来说,我明白了; "Uncaught TypeError: Cannot read property 'state' of undefined"。 在我的更新功能中,我有这个:
create: function() {
[...]
map.setCollisionByExclusion([], true, doorLayer);
[...]
}
当我尝试在碰撞动作的更新函数中访问 this.game 时,出现上述错误。 这是代码;
update: function() {
[...]
this.game.physics.arcade.collide(player, doorLayer, function() {
if (hasItem) {
this.game.state.start('Hallway'); //This is where I get the error
}
});
[...]
}
感谢您的宝贵时间。
this.game.physics.arcade.collide(player, doorLayer, function() {
if (hasItem) {
this.game.state.start('Hallway'); //This is where I get the error
}
});
注意内部 this
指的是您传递的匿名函数,它显然没有名为 game
.
理想情况下,将 this
重命名为其他名称,然后使用它。
现在您可以在传递的匿名函数中使用 myself
变量并访问 myself
的属性。
即
var myself = this;