gpt4 book ai didi

Javascript 未捕获类型错误 : undefined is not a function

转载 作者:行者123 更新时间:2023-11-29 15:36:56 27 4
gpt4 key购买 nike

我正在尝试使用 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”调用它,我会得到“undefined is not a function exception”。

我使用的引擎是 Phaser,我的所有代码都在一个文件中,如果这有什么不同的话。按下键时,从回调函数调用函数“spacePressed”。从游戏的主更新循环调用“updatePlayer”。

您知道为什么会发生这种情况吗?当我从一个函数而不是另一个函数调用它时,为什么它可以工作?如有必要,很乐意提供更多代码和详细信息。

最佳答案

当你使用对象方法作为事件处理程序或回调函数时,this 将不再引用该对象。

最简单的解决方法:

var mainState = { ... };
element.addEventListener(type, mainState.spacePressed.bind(mainState), false);

可能并非每个浏览器/版本都支持此方法,因此您可以改用此方法:

var mainState = { ... };
element.addEventListener(type, function() {
mainState.spacePressed.call(mainState);
}, false);

关于Javascript 未捕获类型错误 : undefined is not a function,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27216268/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com