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;