Tutorial 6 - Animació amb ActionScript 3.0

Pas 10 de 19

A més de l'arrossegament interactiu del núvol, afegirem un desplaçament continu del núvol per l'escenari mitjançant una funció que anomenarem wind.

Hi ha un tipus d'esdeveniment anomenat ENTER_FRAME, que pertany a una categoria genèrica d'esdeveniments anomenada Event, que s'executa cada vegada que el cap lector es desplaça un fotograma. Si el cap lector està aturat, però l'objecte a què s'associa és a l'escenari (tant si és visible com no), també s'executarà amb la mateixa freqüència que els fotogrames per segon que tinguem definits.

En el cas de la nostra pel·lícula, una funció que s'associï a un esdeveniment ENTER_FRAME s'executarà cada vegada que el cap lector avanci, és a dir, 24 vegades per segon. Canviarem lleugerament la posición del núvol cada 1/24 de segon, per la qual cosa mostrarà una animació fluida.

Afegim aquest listener nou sota els altres dos que havíem creat. Per a això escrivim aquest codi:

cloud1_mc.addEventListener(Event.ENTER_FRAME, wind);

A falta de definir les instruccions que executarà la funció wind, la seva definició quedarà com s’indica a continuació:

function wind(e:Event):void
{
}

Com podem veure, l'esdeveniment ENTER_FRAME pertany a una categoria anomenada Event, i no a esdeveniments de ratolí (MouseEvent). Aquest Event apareixerà tant en la creació del listener com en el paràmetre de la funció.

Perquè el núvol avanci cap a la dreta haurem de variar-ne la posició x a poc a poc dins de la funció wind. Per exemple, podem especificar que la posició x del núvol augmenti d'un en un el seu valor, que traduït a codi seria:

cloud1_mc.x = cloud1_mc.x + 1;

o bé, més senzill:

cloud1_mc.x += 1;

que significa sumar-ne el valor més el nombre que hi ha després de =, en aquest cas una unitat.