2013-03-16 56 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 2013-03-16 03:46:37

+0

@vesper不,我認爲Snukus答案是正確的,就好像'arrayPosition'是數組最後一個可能的索引(即'buttonArray.length - 1'),我們希望將它設置爲0來表示下一個事件。如果沒有,那麼我們只增加一個'arrayPosition'。 – duTr 2013-03-16 03:59:41

+0

我在問題中提到的問題,我已經嘗試過,這不是嘻哈..但thx。 – tailedmouse 2013-03-16 04:05:41

0

你在檢查位置時有錯誤,你檢查數組的長度,但你應該檢查位置本身。

if (arrayPosition == buttonArray.length) 
相關問題