Phaser:在Update函数中未定义this.game

时间:2015-05-20 20:09:12

标签: javascript phaser-framework

晚上好, 很抱歉再次询问,但明天我需要完成这项工作。基本上,当我尝试在更新函数中访问this.game变量时,它表示它是未定义的,具体来说,我得到了这个; "未捕获的TypeError:无法读取属性' state'未定义"。 在我的更新功能中,我有这个:

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时,我收到上面提到的错误。 这是代码;

vp2.setCurrentItem(selectedItemIndex,false);
vp1.setCurrentItem(1,true);

感谢您的时间。

1 个答案:

答案 0 :(得分:1)

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;