gpt4 book ai didi

Javascript:未捕获的类型错误未定义不是对象方法的函数

转载 作者:行者123 更新时间:2023-12-02 17:20:44 25 4
gpt4 key购买 nike

我做了一个简单的问答游戏。这是我在一个对象内拥有的一些相关方法。

但是不起作用。我总是在“rightAnswerGot”函数中收到错误。控制台掉落“未定义的未捕获类型错误不是对象方法的函数” for this.addVariantsHtml(this.updateCharacter());

BasicGame.Game.prototype = {


actionOnClick: function (button) {
var log;
if(button.value==this.char_bubble.text) {

setTimeout(this.rightAnswerGot,1000);

} else {
// wrong

swoshsound.play();

}
console.log(log);
},

rightAnswerGot: function (){

this.addVariantsHtml(this.updateCharacter());


},

addVariantsHtml: function(id) {

this.answer = this.getAnswersVariants(id);

for (var i = 0; i < 6; i++) {
this.button[i].value = this.answer[i]['trans'];
this.button[i].char_id = this.answer[i]['id'];
this.ans_text[i].setText(this.answer[i]['trans']);

}
},

updateCharacter: function() {
var i = this.getRandomCharacter();
console.log("updateCharacter: "+i + " " +this.chars[i]);

this.char_bubble.setText(this.chars[i].getPath());
return i;
}

}

目的是当用户选择正确答案时让游戏卡住一秒钟,然后转到下一个问题。知道为什么会发生这种情况吗?

谢谢

最佳答案

对我来说,这看起来像是一个经典的 JavaScript 范围问题。然而,由于您已将此问题标记为使用 Phaser,我建议您使用 Phaser Timer 事件来避免范围问题。具体来说:

setTimeout(this.rightAnswerGot,1000);

将其替换为:

this.game.time.events.add(Phaser.Timer.SECOND, this.rightAnswerGot, this);

这将创建一个仅触发一次的 1 秒计时器,并在其结束时调用您的函数。当然,您可以使用 1000 代替 Phaser.Timer.SECOND。

关于Javascript:未捕获的类型错误未定义不是对象方法的函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23991408/

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