2013-03-16 97 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) 
相关问题