Search code examples
flasharraysdynamicactionscript-2movieclip

Assigning nested movieclips to a multi-dimensional array in flash as2


I have 5 movieclips called row1, row2, ..., row5. Inside each row are the movieclips let1, let2, ..., let15. I want to assign all of the letter clips to a 2 dimensional array. This is a followup to an earlier question Dynamically accessing nested movie clips in flash actionscript 2 .

I am trying this:

var letterClips:Array = [];

for( var i = 1; i <= 5; i++) {

letterClips[i] = new Array(16);

//var row:MovieClip = _root["row" + i];
//rowClips.push(row);

for ( var j = 1; j <= 15; j++) {

    var letter:MovieClip = _root["row" + i]["let" + j];

    letterClips[i].push(letter);

}

}


Solution

  • Well, if you use

    letterClips[i].push(letter);
    

    That's going to add 'letter' to the end of the array and increase its size (by 1). So it will start adding 'letter' movies at position 16, and continue with 17, 18,...

    Solution 1: replace

    letterClips[i] = new Array(16);
    

    with

    letterClips[i] = new Array();
    

    Solution 2: replace

    letterClips[i].push(letter);
    

    with

    letterClips[i][j] = letter;
    

    Either one should work.

    P.S. Also note that since your indices (i,j) start at 1, your [0][j] and [i][0] slots will be undefined by the time you go through all the iterations.