【发布时间】:2014-11-30 17:50:34
【问题描述】:
我正在尝试使用 Phaser 引擎制作一个简单的游戏,但我不断收到上述错误。
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”。
您知道为什么会发生这种情况吗?为什么当我从一个函数调用它而不是从另一个函数调用它时它会起作用?如有必要,很乐意提供更多代码和详细信息。
【问题讨论】:
-
如果您在JSFiddle 中重现您的问题,也许我们可以帮助您。
-
您的“spacePressed”函数可能是从事件处理程序中调用的,
this的值不是您想的那样。 -
是的,我的 spacePressed 实际上是从事件处理程序中调用的。在这种情况下如何访问该功能?
-
试试mainState.updatePlayer(),如果updatePlayer函数在按钮上被调用点击'this'对象是指被点击的按钮
标签: javascript exception phaser-framework