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");
        }
    }
4

3 回答 3

1

尝试改变:

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

至:

if (arrayPosition == (buttonArray.length-1))
{
          arrayPosition = 0;
          trace ("this is working");
}
于 2013-03-16T03:44:36.880 回答
0

您在检查位置时出错,您正在根据数组的长度检查元素,但您应该检查位置本身。

 if (arrayPosition == buttonArray.length)
于 2013-03-16T03:46:01.627 回答
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
}
于 2013-03-16T03:12:30.723 回答