为什么这个AS3代码生成“错误#2006:提供的索引超出范围”?

时间:2013-03-30 22:04:13

标签: actionscript-3

所以我要做的就是遍历数组“maps”的每个元素,其中包含4个动画片段并查看每个动画片段中的子项以查看哪些类型为“块”。但是我收到#2006错误,我不知道为什么,有人可以帮忙吗?

function findBlocks() 
{
    trace("findBlocks()");

    for (i=0; maps.length; i++)
    {
        for (var j=0; maps[i].numChildren; j++)
        {
            var mc = maps[i].getChildAt(j);
            if (mc is Block)
            {
                blocks.push(mc);
            }
        }
    }
    trace("blocks array: " + blocks);
}

1 个答案:

答案 0 :(得分:3)

你的for循环条件不正确,试试这个:

for (var i=0; i < maps.length; i++){
    for (var j=0; j < maps[i].numChildren; j++){
        var mc = maps[i].getChildAt(j);
        if (mc is Block){
            blocks.push(mc);
        }
    }

}

你必须记住,数组和显示列表从0开始,所以列表中最后一个元素的索引是length-1,如果是显示列表,则为numChildren-1

i < maps.length

j < maps[i].numChildren 

是解决问题的方法