Bucles

Los bucles repiten una acción un determinado número de veces, o hasta que se cumpla cierta condición.

while y do..while

Un bucle es una estructura que permite repetir una tarea un número de veces, determinado por una condición. Para hacer bucles podemos utilizar las estructuras while y do...while. Estos bucles iteran indefinidamente mientras se cumpla una condición. La diferencia entre ellas es que la primera comprueba dicha condición antes de realizar cada iteración y la segunda lo hace después:





Vamos a ver el siguiente ejemplo:



En este caso solo veríamos aparecer una mensaje diciendo que es un do...while. ¿Qué por qué? Veamos. El while comprueba primero si el numero es igual a 1 y, como no lo es, no ejecutaría el código que tiene dentro del bucle. En cambio, el do...while primero ejecuta el código y luego, viendo que la condición es falsa, saldría.

Vamos a ver como fluye la información en los bucles do..while:



En el siguiente ejemplo, el bucle se ejecuta cuatro veces:



En el siguiente ejemplo, el bucle se ejecuta tambien cuatro veces. La expresión se evalúa al final del segmento de código de modo que el bucle siempre se ejecuta al menos una vez:



for

La mayoría de los bucles utilizan algún tipo de contador para controlar cuantas veces se ejecuta el bucle. Puede declarar una variable y escribir una sentencia que incremente o disminuya el valor de la variable cada vez que se ejecute el bucle. En la acción for, el contador y la sentencia que incrementa el contador son parte de la acción, como se muestra a continuación:



En ActionScript, el bucle for es singularmente potente. No se reduce a casos numéricos como en muchos otros lenguajes sino que nos da mucha más libertad. Tiene la siguiente estructura:



El código contenido en el bucle se ejecutará mientras la condición se cumpla. Antes de comenzar la primera iteración del bucle se ejecutará la sentencia inicio y en cada iteración lo hará incremento. La manera más habitual de usar estas posibilidades es, claro está, la numérica. El siguiente ejemplo añade



Cuando utilizamos que bucle? Como ya hemos visto se diferencian los bucles while y do..while solo por un hecho: sí la acción tiene que estar ejecutado al menos una vez se utiliza el do..while, sí la condición también tiene que estar comprobada la primera vez se utiliza el bucle while. Por cambio sí el numero de repeticiones esta determinada se utiliza el bucle for.

for..in

La sentencia for..in se utilice para que se realice el bucle a través de los subniveles de un clip de película u objeto. Los subniveles incluyen otros clips de películas, funciones, objetos y variables. El siguiente ejemplo utiliza trace para imprimir sus resultados en la ventana Salida:



Este ejemplo produce los siguientes resultados en la ventana Salida:





La salida de este ejemplo es la que se muestra a continuación:



Puede que desee que su script se repita sobre un tipo de subnivel en particular: por ejemplo, solamente sobre el clip de película secundario. Puede hacer esto con for...in junto con el operador typeof.



Nota: La sentencia for...in se repite sobre las propiedades de los objetos que forman parte de la cadena prototipo del objeto sobre el que se está efectuando la repetición. Si el prototipo de un objeto secundario es parent, for...in también se repetirá en las propiedades de parent.

break y bucles

Por último, hay que decir que la ejecución de la sentencia break dentro de cualquier parte del bucle provoca la salida inmediata del mismo. Aunque a veces no hay más remedio que utilizarlo, es mejor evitarlo para mejorar la legibilidad y elegancia del código. El siguiente ejemplo usa el break para salir de un bucle infinito:



Ejemplo bucle - Crear Amigos

Vamos a ver línea por línea. El bucle for supongo ya esta claro - repite las acciones que contiene count veces. y el count es el numero que pone el usuario en el campo de texto llamado "count".



Una cosa que puede quedar confuso es el parte "dupCara" + i. Este acción coge el string "dupCara" y añade al final el numero que esta en la variable x, por ejemplo si i = 1, recibimos el string "dupCara1". Hasta que x esta cambiado recibimos cada vez un nombre diferente.

Pero como todos los objetos copiadas tienen la misma posición no son visibles. Hay que cambiar su posición cambiando sus propiedades _x y _y. Otra vez usamos el truco con la variable aprendido arriba. Añadimos al _x y al _y cada vez 5 píxeles:



Estos comandos están utilizando el método array para determinar el nombre de la grafica cuales características quiero cambiar. El objeto root contiene todos los objetos utilizados en este movie. Con el nombre escrito entre paréntesis determinamos el imagen adecuada, por ejemplo refiere _root[dupCara1] al objeto _root.dupCara1 y con _root[dupCara1].x accedamos a su posición x.

Para dejar al usuario la posibilidad de elegir el numero de amigos creamos un campo de texto relacionado con la variable count:



Voy a presentar otro método para acceder variables de un objeto utilizando las ordenes getProperty y setProperty:



Dibujar las caras a posiciones casuales es posible con la siguiente orden:



Otra característica de un objeto es su tamaño. Así podemos cambiar los tamaños de los objetos caras con casualidad:



Y ahora ponemos todo junto:




copyleft 2002: Gerald Kogler