读出多维数组

时间:2012-11-10 11:42:06

标签: actionscript-3 flash

正确读入多数组 但读出阵列他搞砸了。 假设要对数组中的数组中的每个元素执行的操作,当2个数组中有更多索引时,他不会再这样做。

当2个数组中的第二个索引使得他不再对先前的索引执行此操作时,只有最后一个索引。

感谢

private var Enemy:Array = new Array();//1st array
private var EnemyHull:Array = new Array(); 
private var waves:Array = new Array();//2 array ==> array 1 get in this

private function enterFrame(e:Event):void
    {                               
        //Enemy Ai
        for(var i2:uint; i2 < waves.length; i2++){
            for(var i:uint; i < Enemy.length; i++){
                waves[i2][i].x -= 1;//when a second index in 2 array i made he doesn't do this action anymore on previous index, only the last made index.
            }
        }
    }

private function enemySpawnen(event:TimerEvent):void
    {           
        for(var i:uint = 0; i < hoeveelheidEnemy;i++){
            //
            }

            if(Enemy[i] != null){;
                viewContainer.addChild(Enemy[i]);
                //
            }
        }
        waves[iwaves] = Enemy;
        iwaves++;
    }

 function shoot(e:Event):void
            {
                //                  
                try{
                    for(var i2:uint; i2 < waves.length; i2++){
                        for(var i:uint = Enemy.length-1; i >= 0;i--){
                            if(kogel.hitTestObject(waves[i2][i])){
                                //
                                }
                            }
                        }
                    }
                }
                    catch(e:Error){

                    }
                }
            }

1 个答案:

答案 0 :(得分:0)

你的for循环错过了一个重要的事情才能正常工作:你必须将迭代器(i或i2)初始化为起始值。

您写道:

for(var i2:uint; i2 < waves.length; i2++){
        for(var i:uint; i < Enemy.length; i++){
            waves[i2][i].x -= 1;
        }
    }

但你需要的是:

for(var i2:uint = 0; i2 < waves.length; i2++){
        for(var i:uint = 0; i < Enemy.length; i++){
            waves[i2][i].x -= 1;
        }
    }

不要忘记循环声明中的 = 0