2013-10-03 6 views
0

200 개 이상의 요소를 배열에 추가하려고합니다. 배열에서 그 요소에 액세스하려고합니다. 3 개의 답이 있습니다. 그 3 답변 배열에서 요소가 필요하지만 또한 나는 두 개의 답변에 동일한 요소가 필요하지 않습니다.AS3의 퀴즈에서 배열에 올바르게 액세스하는 방법은 무엇입니까?

var random: Number; 
var answ: Array = [var1, var2, var3]; 
    var elements : Array = [1,2,3,4,5,6,7,8,9,...]; 
GAME.answer1.addEventListener(MouseEvent.CLICK, randomNumberEvent); 
    GAME.answer2.addEventListener(MouseEvent.CLICK, randomNumberEvent); 
    GAME.answer3.addEventListener(MouseEvent.CLICK, randomNumberEvent); 
answer1.text = elements[random]; 
answer2.text = elements[random]; 
answer3.text = elements[random]; 
function displayRandomNumber() 
{ 
randomGen = randBetween(2, 120); 
GAME.randomNumberText.text = randomGen.toString(); 
if(myArray.indexOf(randomGen) == -1){ 
myArray.push(randomGen); 
cookie.data.storedmyArray=myArray; 
cookie.flush(); 
levelu = randomGen; 
}else{ 
displayRandomNumber() 
    } 
} 

요소에 임의로 액세스하여 답변에 할당하는 가장 좋은 방법은 무엇입니까?

답변

0

좋은 범위 내의 임의의 인덱스를 생성하도록 배열 길이를 사용

answer1.text = 요소 [INT (인 Math.random() * elements.length)];

당신은 두 번 항목 피하고 싶은 경우

package 
{ 
    import flash.display.Sprite; 

    public class TestAnswer extends Sprite 
    { 
     public function TestAnswer() 
     { 
      super(); 

      var answers : Array = ["A","B","C","D","E","F","G","H","I","J","K"]; 

      for(var i : uint = 0; i < 10; ++i) 
       trace(getAnswers(3, answers)); 
     } 

     public function getAnswers(num : uint, from : Array) : Array 
     { 
      if(num > from.length) 
       throw new Error("Not enought answers provided"); 

      var result : Array = []; 

      // Clone Array 
      var newArray : Array = from.concat(); 

      // Extract random answers 
      while(result.length != num) 
       result = result.concat(newArray.splice(int(newArray.length * Math.random()), 1)); 

      return result; 
     } 
    } 
} 

출력 exemple :

A,C,D 
A,G,J 
F,E,J 
I,A,C 
H,K,C 
I,H,K 
D,F,A 
I,G,A 
A,H,J 
D,I,H 
+0

들으이 대단히 –

관련 문제