Я делаю викторину, которая, когда игрок вводит последовательность букв, система будет сравнивать вход с правильным ответом. Я использовал массив для хранения всех вопросов, и система должна загрузить элемент из первого индекса массива, который является «F_L_A_S_H», но он отображает последний элемент, может ли кто-нибудь сказать мне, как это исправить?Получение каждого элемента из массива actionscript 3
общественный класс главный расширяет MovieClip {
var myRes:Array;
var answerArr:Array;
var questionNo:int = 0;
public function main() {
this.displayQuestion();
}
public function displayQuestion():void {
myRes = new Array();
answerArr = new Array();
var questionArr:Array = new Array("F_L_A_S_H", "H_E_L_L_O", "5_+_5_=_10");
for (var i:int =0; i<questionArr.length; i++) {
var myStr:String = questionArr[i];
answerArr = myStr.split("_");
var subStr:Array = myStr.split("_");
subStr.sort(this.randomSort);
word1.changelabel(subStr[0]);
word2.changelabel(subStr[1]);
word3.changelabel(subStr[2]);
word4.changelabel(subStr[3]);
word5.changelabel(subStr[4]);
stage.addEventListener(KeyboardEvent.KEY_DOWN,ClickDown);
}
}
public function ClickDown(e:KeyboardEvent):void{
alert1.changelabel('');
if(e.keyCode == 65){
myRes.push(word1.getLabel());
trace(myRes);
result1.changeLabel(myRes);
this.CheckAnswer(answerArr);
} else if (e.keyCode == 83) {
myRes.push(word2.getLabel());
trace(myRes);
result1.changeLabel(myRes);
this.CheckAnswer(answerArr);
} else if (e.keyCode == 68) {
myRes.push(word3.getLabel());
trace(myRes);
result1.changeLabel(myRes);
this.CheckAnswer(answerArr);
} else if (e.keyCode == 70) {
myRes.push(word4.getLabel());
trace(myRes);
result1.changeLabel(myRes);
this.CheckAnswer(answerArr);
} else if (e.keyCode == 71) {
myRes.push(word5.getLabel());
trace(myRes);
result1.changeLabel(myRes);
this.CheckAnswer(answerArr);
}
}
public function randomSort(objA:Object, objB:Object):int {
return Math.round(Math.random() * 3) - 1
}
public function CheckAnswer(newLabel:Array):void {
if(myRes.length > 4) {
for (var i:int = 0; i<myRes.length; i++) {
if (myRes[i] !== newLabel[i]) {
alert1.changelabel('You are Wrong!');
break;
} else {
alert1.changelabel('You are Right!');
}
}
myRes.length = 0;
}
}
}
}
Точно. У меня есть три массива. questionArr содержит все вопросы в каждом элементе. answerArr - ответ этого конкретного вопроса, и myRes - это вход от игрока. Я должен помещать эти массивы в цикл for, потому что каждый раз при загрузке нового вопроса ответ и ввод будут разными. моя логика правильная? или из-за структуры? – user1805430
Дело в том, что * answerArr * - это переменная класса. И последняя итерация цикла устанавливает его значение. То есть вы всегда получаете последний элемент в * answerArr *. – Krasimir