Comunidad de diseño web y desarrollo en internet

Arrays Multidimensionales en ActionScript

Una Matriz (Array) es una variable que contiene a su vez más variables.

Por ejemplo:

Código :

var miMatriz:Array = new Array();
miMatriz = ["Elemento1", "Elemento2", "ElementoN"];

Si hacemos un trace(miMatriz); nos devuleve:

Código :

Elemento1, Elemento2, ElementoN

Y si hacemos un trace(miMatriz[0]); nos devuleve:

Código :

Elemento1

Esto es porque se empieza a contar el primer elemento desde el "0"(cero), es decir miMatriz tiene un length de 2, (0,1,2 que serian 3 elementos).

Ahora que sabemos que es una Matriz pasamos a ver Matriz Multidimensional.

Una Matriz Multidimensional es aquella que contiene Elementos "dentro" de los Elementos.
Por ejemplo:

Código :

myArray = [ [0,8,0,5,0,1,2,0],
            [1,0,2,0,0,2,2,1],
            [0,5,0,1,2,0,3,0],
            [5,2,1,0,3,0,1,5],
            [0,1,0,2,0,2,0,0],
            [2,0,3,0,1,5,1,5],
            [0,3,0,3,2,0,0,5],
            [3,0,0,5,0,1,0,0] ];


Si hacemos un trace(myArray); nos devuleve esto:

Código :

0,8,0,5,0,1,2,0,1,0,2,0,0,2,2,1,0,5,0,1,2,0,3,0,5,2,1,0,3,0,1,5,0,1,0,2,0,2,0,0,2,0,3,0,1,5,1,5,0,3,0,3,2,0,0,5,3,0,0,5,0,1,0,0

Que son todos los Elementos (en este caso números) de nuestra matriz.

Si queremos acceder al segundo elemento (el 8) escribimos:

Código :

trace(myArray[0][1]);


Escribimos "0" y "1" porque queremos acceder al segundo elemento("1", que es el 8) del primer elemento("0, que es [0,8,0,5,0,1,2,0] )

Suena complicado, pero no lo es tanto, sólo necesitas leerlo varias veces y ponerlo en práctica.

Ahora, para cargar todos lo elementos haremos esto:

Código :

for(var i:int = 0; i<myArray.length; i++)
{
   for(var j:int = 0; j<myArray[i].length; j++)
   {
      trace(myArray[i][j]);
   }
}


Son solo dos loops, el primero (i), se repite las veces de la cantidad de elementos de myArray (que en este caso son 8).

Y el segundo las veces de la cantidad de elementos que tiene cada elemento de myArray[i] (que también son 8), lo que en el for() nos da un resultado de 64 elementos.

El resultado del trace son los elementos del array.

¿Y para que hago todo esto si me va a dar lo mismo que trace(myArray)?

La diferencia es que los for() cargan cada elemento de uno por uno, con lo que podemos darles una acción a todos los elementos con pocas lineas.

¿Y para que me sirve una Matriz Multidimensional??

Pueden servir para variedad de cosas, algunos ejemplos son:

Posiciones, mapas y propiedades. En los Tile Based Games

Guardar datos. myArray = [["Juan", 18, "España"], ["Mario", 21, "Italia]]

En fin, solo hay que pensar para darles un buen uso y evitar hacer mucho código que pudiéramos evitar.

Como ejemplo les dejo un Editor de Mapas:

¿Sabes SQL? ¿No-SQL? Aprende MySQL, PostgreSQL, MongoDB, Redis y más con el Curso Profesional de Bases de Datos que empieza el martes, en vivo.

Publica tu comentario

o puedes...

¿Estás registrado en Cristalab y quieres
publicar tu URL y avatar?

¿No estás registrado aún pero quieres hacerlo antes de publicar tu comentario?

Registrate