1

嗨,我在 JavaScript 中遇到了一些麻烦。虽然我浏览了一些以前的帖子,但我还没有找到答案。

我正在开发一个 HTML5+Javascript 游戏,我有一个 Emotion-Object:emotionImg 是一个 Image(),类型是一个字符串。

function Emotion(emotionImg, type) {

this.emotionImg = emotionImg;
this.emotionImg.onload = function() {
    console.log("added emotion: "+type);
};
this.type = type;

// last emotion of a scene
this.isLast = false;

this.setLast = function() {
    this.isLast = true;
};

return this;

}

这些情绪存储在一个数组(all_emotions)中。在我的游戏中,情绪是随机选择的——图像被绘制到我的画布上。emotype 是一个字符串。

currEmotion1 = randomEmotion(emotype);
// set image
emo1img = currEmotion1.emotionImg;

我的随机函数:

function randomEmotion(type) {
if(type == "happy") {
    return all_emotions[0][Math.floor(Math.random()*all_emotions[0].length)];
}
else if(type == "sad") {
    return all_emotions[1][Math.floor(Math.random()*all_emotions[0].length)];
}

有时,在调用我的随机函数时,我会收到错误消息:

TypeError: currEmotion1 未定义 [Bei diesem Fehler anhalten]

emo1img = currEmotion1.emotionImg;

任何人都可以帮助我吗?

4

1 回答 1

0

randomEmotion函数中,when typeis sad,您正在生成一个基于all_emotions[0]但从 读取的随机索引all_emotions[1],将其更改为下面的摘录,错误应该得到解决:

function randomEmotion(type) {
  if(type == "happy") {
    return all_emotions[0][Math.floor(Math.random()*all_emotions[0].length)];
  }
  else if(type == "sad") {
    return all_emotions[1][Math.floor(Math.random()*all_emotions[1].length)];
  }
}
于 2013-01-16T09:19:28.603 回答