我正在尝试使用Phaser引擎制作一个简单的游戏,但我一直收到以上错误提示。
如您所见,我已经定义了函数 playerJump。所有在示例中看到的变量都已正确定义且正常工作。当我从 updatePlayer 调用函数“playerJump”时,不会出现任何错误。但是,如果我尝试从 spacePressed 中调用它,则会出现“未定义的函数异常”。我的引擎是 Phaser,而且我的所有代码都在一个文件中,如果这有什么区别的话。当按下键盘键时,回调函数会调用“spacePressed”。在游戏的主更新循环中调用“updatePlayer”。您有什么想法可能会发生这种情况吗?为什么在从一个函数调用它时可以工作,但从另一个函数中却不能工作?如有必要,我很乐意提供更多代码和详细信息。
var mainState = {
...
playerJump: function(){
yVelocity = -jumpPower;
},
spacePressed: function(){
if(started)
{
return;
}
started = true;
this.playerJump();
},
...
updatePlayer: function(){
if(player.body.x < game.world.centerX)
{
player.body.x += xVelocity;
}
player.body.y += yVelocity;
yVelocity += gravity;
if(player.body.y + player.body.height > floor)
{
this.playerJump();
}
},
...}
如您所见,我已经定义了函数 playerJump。所有在示例中看到的变量都已正确定义且正常工作。当我从 updatePlayer 调用函数“playerJump”时,不会出现任何错误。但是,如果我尝试从 spacePressed 中调用它,则会出现“未定义的函数异常”。我的引擎是 Phaser,而且我的所有代码都在一个文件中,如果这有什么区别的话。当按下键盘键时,回调函数会调用“spacePressed”。在游戏的主更新循环中调用“updatePlayer”。您有什么想法可能会发生这种情况吗?为什么在从一个函数调用它时可以工作,但从另一个函数中却不能工作?如有必要,我很乐意提供更多代码和详细信息。
this
的值并不是你所认为的。 - Pointy