To get the indeces of the tiles in diagonal 'rows' or 'slices' in a grid you
could do something like this:

function getDiagonalGridSlices(numRows:Number, numCols:Number,
startingCorner:String):Array{
        var a1 = new Array(), a2 = new Array(), c = 0;
        for(var i=0; i<numCols; i++){
                a2[i] = new Array();
                for(var j=0; j<numRows; j++){
                        a2[i][j] = c;
                        c++;
                }
        }
        if(startingCorner == 'topLeft' || startingCorner == 'bottomRight'){
                for(var i=0; i<numCols*2 + 1; i++){
                        a1[i] = new Array();
                        var ii = i;
                        for(var j=0; j<numRows; j++){
                                if(a2[ii][j] != undefined){
                                        a1[i].push(a2[ii][j]);
                                }
                                ii--;
                                if(ii < 0){
                                        break;
                                }
                        }
                }
                if(startingCorner == 'bottomRight'){
                        a1.reverse();
                }
        }else if(startingCorner == 'topRight' || startingCorner == 
'bottomLeft'){
                // todo - adjust accordingly
        }
        return a1;
}



// for testing
// In the library: a 50x50 shape, linkage name 'square'

import mx.transitions.Tween;
import mx.transitions.easing.*;


numRows = 3;
numCols = 5;
tileWidth = tileHeight = 50;

diagonalGridSlices = getDiagonalGridSlices(numRows, numCols, 'topLeft');

tiles = createTiles(numRows, numCols, tileWidth, tileHeight);
m = 0;
buildTiles = setInterval(fadeTiles, 100);

function createTiles(numRows:Number, numCols:Number, tileWidth:Number,
tileHeight:Number):Array{
        var tiles = new Array();
        for(var i=0; i<numRows*numCols; i++){
      tiles[i] = _root.attachMovie("square", "tile" + i + "_mc", i, {_x:i %
numRows * tileWidth,_y:Math.floor(i / numRows) * tileHeight, _alpha:0});
        }
        return tiles;
}

function fadeTiles():Void{
    if (m == diagonalGridSlices.length){
        clearInterval(buildTiles);
    } else {
                for(var i=0, len=diagonalGridSlices[m].length; i<len; i++){
                new Tween(tiles[diagonalGridSlices[m][i]], "_alpha",
Regular.easeInOut, 0, 100, 35,false);
                }
        m++;
    }
}

hth
--------------
Andreas Weber
motiondraw.com




Hehe, all good.  Thanks John.  I'm sitting here trying to write something
mathematically that works.  Turns out I am the suck at math, so it's making
this complicated.  Hand coding the array would be laborsome and wouldn't
allow for extensibility.

Grrr...


fM.


_______________________________________________
Flashcoders@chattyfig.figleaf.com
To change your subscription options or search the archive:
http://chattyfig.figleaf.com/mailman/listinfo/flashcoders

Brought to you by Fig Leaf Software
Premier Authorized Adobe Consulting and Training
http://www.figleaf.com
http://training.figleaf.com

Reply via email to