Tutorial 6 - Animación con ActionScript 3.0

Paso 10 de 19

Además del arrastre interactivo de la nube, vamos a añadir un desplazamiento continuo de la nube por el escenario mediante una función a la que llamaremos wind.

Existe un tipo de evento llamado ENTER_FRAME, que pertenece a una categoría genérica de eventos llamada Event, que se ejecuta cada vez que la cabeza lectora se desplaza un fotograma. Si la cabeza lectora está detenida, pero el objeto al que se asocia está en el escenario (esté o no visible), también se ejecutará con la misma frecuencia que los fotogramas por segundo que tengamos definidos.

En el caso de nuestra película, una función que se asocie a un evento ENTER_FRAME se ejecutará cada vez que avance la cabeza lectora, es decir, 24 veces por segundo. Cambiaremos ligeramente la posición de la nube cada 1/24 de segundo, por lo que mostrará una animación fluida.

Agregamos este nuevo listener bajo los otros dos que habíamos creado. Para ello escribimos este código:

cloud1_mc.addEventListener(Event.ENTER_FRAME, wind);

A falta de definir las instrucciones que ejecutará la función wind, su definición quedará como sigue:

function wind(e:Event):void
{
}

Como podemos ver, el evento ENTER_FRAME pertenece a una categoría llamada Event, y no a eventos de ratón (MouseEvent). Este Event aparecerá tanto en la creación del listener como en el parámetro de la función.

Para que la nube avance hacia la derecha tendremos que variar su posición x poco a poco dentro de la función wind. Por ejemplo, podemos especificar que la posición x de la nube aumente de uno en uno su valor, lo que traducido a código sería:

cloud1_mc.x = cloud1_mc.x + 1;

o bien, más sencillo:

cloud1_mc.x += 1;

que significa sumar su valor más el número que se encuentra tras el =, una unidad en este caso.