0

这可能是一个简单的,如果是我相信我会觉得很愚蠢。

基本上,我有数组 a1、a2 和 a3。

使用 for 语句..

for (var i 0; i < 4; i++) {
//stuff
}

如何使用 i 将 for 语句中的数据推送到这些数组之一?也就是说,每次将数据添加到下一个组中。a[0] -> a[1] 等。我试过 getDefinitionByName 但似乎只适用于库对象!

对不起,如果它很简单!

提前喝彩。

编辑:

我需要它工作的完整代码。这就是我尝试使用给出的第一个答案的方法。

var fullList:Vector.<Array> = new Vector.<Array>();

for (var i1 = 0; i1 < 3; i1++)
{
    fullList.push(new Array());
}

var levelLoader:URLLoader = new URLLoader();
levelLoader.addEventListener(Event.COMPLETE, levelLoaded);
function levelLoaded(e:Event):void
{
    var indexcount = 0;
    txttileArray = e.target.data.split("a");
    txtDebug.text = txttileArray.toString();
    for (var i = 1; i < 4; i++)
    {
        temparray1 = txttileArray[indexcount].split("");
        for (var row = 0; row < temparray1.length; row ++)
        {
            var a = getDefinitionByName(temparray1[row] + "Tile") as Class;
            //trace(a);
            var b = new a  ;
            b.x = 17 + 17 * row;
            b.y = 17 + 17 * indexcount;
            addChild(b);
            fullList[indexcount].push(b);
        }
        indexcount++;
    }
}

对不起,混乱的变量名。

4

2 回答 2

0

成立。

您需要在数组中使用数组。

private var fullList:Vector.<Array>;
private var total:uint = 4;

function a():void
{
    // first creating array list
    fullList = new Vector.<Array>();

    for (var i:uint = 0; i < total; i++)
    {
        fullList.push(new Array());
    }
}

function b():void
{
    // doing the stuff

    for (var i:uint = 0; i < total; i++)
    {
        switch (i)
        {
            case 0:

                fullList[i].push('zero-array-push');
                break;

            case 1:

                fullList[i].push('one-array-push');
                break;

            case 2:

                fullList[i].push('two-array-push');
                break;

            case 3:

                fullList[i].push('three-array-push');
                break;
        }
    }
}
于 2012-08-02T10:02:25.667 回答
0

我有三个数组,a1、a2 和 a3。我希望能够根据变量“i”的值访问这些数组。例如,如果“i”为 1,我想将数据值推送到 a1。等等——hazdog

如果您将数组 a1、a2 和 a3 作为本地(在函数中定义)变量,则这是不可能的。如果它们是在类中定义的,那么您可以这样做:

private var a1:Array=[];
private var a2:Array=[];
private var a3:Array=[];

private function pushValue(identifier:String, value:Object):int {
    var name:String="a" + identifier;
    var target:Array=this[name] as Array;
    if(target == null) {
        throw new Error("No such array " + name);
    } else {
        return target.push(value);
    }
}

//And then call it like this:
pushValue("1", "This value goes in array a1");
pushValue("1", "This is another value that goes in array a1");

pushValue("2", "This value goes in array a1");
pushValue("2", "This is another value that goes in array a2");

pushValue("3", "This value goes in array a3");
pushValue("3", "This is another value that goes in array a3");

否则,您可以定义一个数组数组(或数组向量),例如holderArray将目标数组放入其中,然后将值推送到holderArray[identifier]

编辑而 不是定义a1,在对象中,像这样定义它:a2a3this

private var arrayHolder:Object={};

private function init():void {
    for(var i:int=1; i<=3; i++) {
        arrayHolder["a" + i]=new Array();
    }
}

init();

然后,您的数组将存储为arrayHolder.a1,arrayHolder.a2等并 修改arrayHolder.a3pushValue 如下:

var target:Array=this[name] as Array;

var target:Array=arrayHolder[name] as Array;
于 2012-08-02T11:13:23.657 回答