2013-03-16 9 views
0

Я хочу, чтобы индекс возвращался к первому, как только его обработка обрабатывала все элементы. Этот код, похоже, не работает. может кто-нибудь дать мне руку о том, как это исправить? почему это происходит?Как попросить массив вернуться к первому индексу?

Одна догадка у меня есть, так как buttonArray.length не равна arrayPosition Это может быть причиной проблемы. Но я попробовал вручную положить 3 и сделал (buttonArray.length-1). Это все еще не сработало.

buttonArray.push (square,triangle,circle,hexagon); 

    function clickon(clickTarget:MouseEvent){ 
     if (clickTarget.target == buttonArray[arrayPosition]){ 
     trace ("correct"); 
     trace (buttonArray.length); 
     trace (arrayPosition); 

     if (buttonArray[arrayPosition]== buttonArray.length) 
     { 
      arrayPosition = 0; 
      trace ("this is working"); 
     } 
     else 
     { 
      arrayPosition++; 
     } 
     // inside if loop end 
     } 
     else 
     { 
      trace ("not correct"); 
     } 
    } 

ответ

0

Один из способов сделать "arrayPosition" петлю вокруг от 0 до buttonArray.length можно пойти:

arrayPosition++ 
arrayPosition = arrayPosition % buttonArray.length; 

Пример в цикле:

var buttonArray:Array = new Array(14); // array is 14 elements long 

var arrayPosition:int = 0; 

for(var counter:int = 0; counter < 100; counter++){ 
    arrayPosition++ 
    arrayPosition = arrayPosition % buttonArray.length; 
    trace(arrayPosition); // goes from 0 to 13, then back to 0 and repeats 
} 
1

Попробуйте изменить:

if (buttonArray[arrayPosition]== buttonArray.length) 
{ 
      arrayPosition = 0; 
      trace ("this is working"); 
} 

Кому:

if (arrayPosition == (buttonArray.length-1)) 
{ 
      arrayPosition = 0; 
      trace ("this is working"); 
} 
+0

Практически там правильная проверка будет проводиться против самой длины. – Vesper

+0

@vesper Нет. Я думаю, что ответ Snukus правильный, как будто 'arrayPosition' является последним индексом, возможным для массива (например,' buttonArray.length - 1'), мы хотим установить его для 0 для следующего события. Если нет, то мы просто увеличиваем 'arrayPosition' на единицу. – duTr

+0

Я упомянул в вопросе, который я уже пробовал, что он не работает heeh .. но thx. – tailedmouse

0

У вас есть ошибка при проверке положения, вы проверяете элемент на длину массива, но вы должны проверить его положение.

if (arrayPosition == buttonArray.length) 
Смежные вопросы