您好我在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;
任何人都可以帮助我吗?
答案 0 :(得分:0)
在randomEmotion
函数中,当type
为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)];
}
}