JavaScript myObject有时未定义

时间:2013-01-16 09:05:28

标签: javascript object undefined

您好我在JavaScript中遇到了一些麻烦。 虽然我查看了之前的一些帖子,但我还没有找到答案。

我正在开发一个HTML5 + Javascript游戏,我有一个Emotion-Object: emotionImg是一个Image(),type是一个String。

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;

任何人都可以帮助我吗?

1 个答案:

答案 0 :(得分:0)

randomEmotion函数中,当typesad时,您正在生成基于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)];
  }
}