0

これは簡単なことかもしれません。

基本的に、配列 a1、a2、a3 があります。

forステートメントを使用して..

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

i を使用して for ステートメントのデータをこれらの配列の 1 つにプッシュするにはどうすればよいですか? つまり、次のグループにデータを追加するたびに。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

a1、a2、a3の3つの配列があります。変数「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]

編集a1a2を 定義する代わりにa3thisオブジェクトで、次のように定義します。

private var arrayHolder:Object={};

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

init();

次に、配列は、などとして保存されarrayHolder.a1、pushValueを次のように変更します。 変更arrayHolder.a2arrayHolder.a3

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

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

始まり。

Array in Array を使用する必要があります。

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 に答える