Documentación de Flash CS3 |
|||
| Programación con ActionScript 3.0 > Utilización de matrices > Matrices multidimensionales | |||
Las matrices multidimensionales contienen otras matrices como elementos. Por ejemplo, considérese una lista de tareas almacenadas en forma de matriz de cadenas indexadas:
var tasks:Array = ["wash dishes", "take out trash"];
Si se desea almacenar una lista independiente de tareas por cada día de la semana, se puede crear una matriz multidimensional con un elemento por cada día de la semana. Cada elemento contiene una matriz indexada, similar a la matriz tasks, que almacena la lista de tareas. Se puede utilizar cualquier combinación de matrices indexadas o asociativas en matrices multidimensionales. Los ejemplos de las secciones siguientes utilizan dos matrices indexadas o una matriz asociativa de matrices indexadas. Se pueden probar las otras combinaciones como ejercicio.
Si se utilizan dos matrices indexadas, se puede visualizar el resultado como una tabla o una hoja de cálculo. Los elementos de la primera matriz representan las filas de la tabla, mientras que los elementos de la segunda matriz representan las columnas.
Por ejemplo, la siguiente matriz multidimensional utiliza dos matrices indexadas para hacer un seguimiento de las listas de tareas para cada día de la semana. La primera matriz, masterTaskList, se crea mediante el constructor de la clase Array. Cada elemento de la matriz representa un día de la semana, donde el índice 0 representa el lunes y el índice 6 representa el domingo. Estos elementos pueden considerarse como las filas de la tabla. Se puede crear la lista de tareas de cada día asignando un literal de matriz a cada uno de los siete elementos creados en la matriz masterTaskList. Los literales de matriz representan las columnas en la tabla.
var masterTaskList:Array = new Array(); masterTaskList[0] = ["wash dishes", "take out trash"]; masterTaskList[1] = ["wash dishes", "pay bills"]; masterTaskList[2] = ["wash dishes", "dentist", "wash dog"]; masterTaskList[3] = ["wash dishes"]; masterTaskList[4] = ["wash dishes", "clean house"]; masterTaskList[5] = ["wash dishes", "wash car", "pay rent"]; masterTaskList[6] = ["mow lawn", "fix chair"];
Se puede acceder a elementos individuales en cualquiera de las listas de tareas mediante la sintaxis de corchetes. El primer conjunto de corchetes representa el día de la semana y el segundo conjunto de corchetes representa la lista de tareas para ese día. Por ejemplo, para recuperar la segunda tarea de la lista del miércoles, se debe utilizar primero el índice 2 correspondiente al miércoles y después el índice 1 correspondiente a la segunda tarea de la lista.
trace(masterTaskList[2][1]); // salida: dentist
Para recuperar la primera tarea de la lista del domingo se debe utilizar el índice 6 correspondiente al domingo y el índice 0 correspondiente a la primera tarea de la lista.
trace(masterTaskList[6][0]); // salida: mow lawn
Para facilitar el acceso a las matrices individuales, se puede utilizar una matriz asociativa para los días de la semana y una matriz indexada para las listas de tareas. El uso de una matriz asociativa permite utilizar la sintaxis con punto al hacer referencia a un día específico de la semana, pero a cambio hay un procesamiento adicional en tiempo de ejecución para acceder a cada elemento de la matriz asociativa. En el ejemplo siguiente se utiliza una matriz asociativa como la base de una lista de tareas, con un par clave-valor para cada día de la semana:
var masterTaskList:Object = new Object(); masterTaskList["Monday"] = ["wash dishes", "take out trash"]; masterTaskList["Tuesday"] = ["wash dishes", "pay bills"]; masterTaskList["Wednesday"] = ["wash dishes", "dentist", "wash dog"]; masterTaskList["Thursday"] = ["wash dishes"]; masterTaskList["Friday"] = ["wash dishes", "clean house"]; masterTaskList["Saturday"] = ["wash dishes", "wash car", "pay rent"]; masterTaskList["Sunday"] = ["mow lawn", "fix chair"];
La sintaxis con punto facilita la lectura del código al evitar la necesidad de utilizar varios juegos de corchetes.
trace(masterTaskList.Wednesday[1]); // salida: dentist trace(masterTaskList.Sunday[0]); // salida: mow lawn
Se puede recorrer la lista de tareas mediante un bucle for..in, pero para acceder al valor asociado con cada clave hay que utilizar la notación de corchetes en lugar de la sintaxis con punto. Como masterTaskList es una matriz asociativa, los elementos no se recuperan necesariamente en el orden esperado, como se muestra en el siguiente ejemplo:
for (var day:String in masterTaskList)
{
trace(day + ": " + masterTaskList[day])
}
/* output:
Sunday: mow lawn,fix chair
Wednesday: wash dishes,dentist,wash dog
Friday: wash dishes,clean house
Thursday: wash dishes
Monday: wash dishes,take out trash
Saturday: wash dishes,wash car,pay rent
Tuesday: wash dishes,pay bills
*/
Flash CS3
Enviarme un mensaje de correo electrónico cuando se añadan comentarios a esta página | Informe de comentarios
Página actual: http://livedocs.adobe.com/flash/9.0_es/main/00000091.html