Siguiendo el tip creado por carloz.yanez sobre los arrays multidimensionales, escribí una clase de ActionScript 3 para crear y controlar el array. La clase MultiArray
Veamos primero su uso ![]()
En el documento .fla
Código :
import MultiArray; var array:MultiArray = new MultiArray();
Código :
array.pushFila(["1a","1b","1c"]); array.pushFila(["2a","2b","2c","2d"]); array.pushFila(["3a","3b"]);
Código :
1a,1b,1c,<> 2a,2b,2c,2d 3a,3b,<>,<>
Código :
array.pushColumna(["1e","2e","3e","4e","5e"]);
Código :
1a,1b,1c,<>,1e 2a,2b,2c,2d,2e 3a,3b,<>,<>,3e <>,<>,<>,<>,4e <>,<>,<>,<>,5e
Código :
array.putItem(2,3,"XX");
Código :
1a,1b,1c,<>,1e 2a,2b,2c,2d,2e 3a,3b,<>,<>,3e <>,<>,XX,<>,4e <>,<>,<>,<>,5e
Código :
array.swapFila(1,["Z1","Z2","Z3","Z4","Z5"]); array.swapColumna(3,["1S","2S","3S","4S","5S"]);
Código :
1a,1b,1c,1S,1e Z1,Z2,Z3,2S,Z5 3a,3b,<>,3S,3e <>,<>,XX,4S,4e <>,<>,<>,5S,5e
Código :
trace(array.getItem(1,2));
Código :
3b
Código :
trace(array.getFila(2));
Código :
3a,3b,<>,3S,3e
Código :
trace(array.getColumna(4));
Código :
1e,Z5,3e,4e,5e
Código :
package {
//------------------------------
public class MultiArray {
//--------------------------
private var _array:Array;
private var _dx:int;
private var _dy:int;
public var _vacio:String;
//
//--------------------------
public function MultiArray() {
_array = new Array();
_dx = 0;
_dy = 0;
_vacio = "<>";
}
//--------------------------
public function pushFila(fila:Array):void {
_dy = (_dy > 0)?_dy+1 :1;
_dx = (_dx > fila.length)?_dx :fila.length;
_array.push(fila);
controlaVacios();
}
//--------------------------
public function pushColumna(columna:Array):void {
while (_dy < columna.length) {
pushFila([_vacio]);
}
_dx = (_dx > 0)?_dx+1 :1;
for (var i:int = 0; i < _dy; i++) {
_array[i].push(columna[i]);
}
controlaVacios();
}
//--------------------------
public function putItem(ix:int,iy:int,item):void {
_array[iy][ix]=item;
}
//--------------------------
public function swapFila(filaNum:int,fila:Array):void {
_array[filaNum] = fila;
controlaVacios();
}
//--------------------------
public function swapColumna(columnaNum:int,columna:Array):void {
for (var i:int = 0; i < columna.length; i++) {
_array[i][columnaNum] = columna[i];
}
controlaVacios();
}
//--------------------------
public function getArray():Array {
return _array;
}
//--------------------------
public function getItem(ix:int,iy:int):Object {
return _array[iy][ix];
}
//--------------------------
public function getFila(filaNum:int):Array {
return _array[filaNum];
}
//--------------------------
public function getColumna(columnaNum:int):Array {
var array:Array = new Array();
for (var i:int = 0; i < _dy; i++) {
array.push(_array[i][columnaNum]);
}
return array;
}
//--------------------------
public function traceArray():void {
for (var i:int = 0; i < _dy; i++) {
trace(_array[i]);
}
}
//--------------------------
//--------------------------
private function controlaVacios():void {
for (var i:int = 0; i < _dy; i++) {
while (_array[i].length<_dx) {
_array[i].push(_vacio);
}
}
}
//--------------------------
}
}
Código :
_dy = (_dy > 0)?_dy+1 :1;
Código :
_dy += 1;
Código :
_dx = (_dx > fila.length)?_dx :fila.length;
Código :
if(_dx <= fila.length) _dx = fila.length;
Código :
while (_dy < columna.length) {
Código :
var columnLength:Number = columna.length;
while (_dy < columnLength) {
Código :
public const _vacio:String = "<>";
Código :
public function putItem(ix:int,iy:int,item):void {
Código :
public function putItem(ix:int,iy:int,item:Object):void {
Código :
public function putItem(ix:int,iy:int,item):Boolean {
if( _array[iy] is Array && _array[iy].length > ix )
{
_array[iy][ix]=item;
return true;
}
return false;
}
Código :
while (_array[i].length<_dx) {
Código :
/** ******************** * Method: getArray * Description: ******************** **/
Dano :