Tutorial 6 - Animació amb ActionScript 3.0

Pas 15 de 19

Per a això hem d'escriure en primer lloc el nom del paràmetre de l'esdeveniment que hem posat en la funció (e en el nostre cas). Després afegim la propietat target. Amb això es farà referència a l'objecte que va disparar l'acció en rebre l'esdeveniment.

Per tant, si substituïm dins de les funcions el nom de la instància per e.target, aconseguirem tenir una referència directa als objectes que han enviat la funció.

Per a comprovar-ho en la funció drag, a més de substituir cloud1_mc per e.target, afegirem un trace que ens mostri el nom (name) de la instància que desencadena l’esdeveniment.

function drag(e:MouseEvent):void 
{
    e.target.startDrag();
    trace(e.target.name);
}

Com que el contingut del trace no està entre cometes, la funció no escriu el valor literal que hem escrit entre parèntesis, sinó el seu valor (en aquest cas és un nom). D'aquesta manera, veurem que en prémer cada núvol el panell Salida ens mostra el seu nom.

Afegim e.target a totes les funcions substituint a cloud1_mc.

Ara tenim un problema amb les posicions que havíem determinat en el condicional if, ja que en tenir el segon núvol més profunditat hauríem de distanciar els dos extrems.

Una manera de conèixer aproximadament aquests valors és canviar el trace de la funció drag perquè ens mostri la posició x del clip sobre el qual fem clic:

trace(e.target.x);

Després desactivem temporalment l'if de la funció wind convertint-lo en un comentari afegint /* abans de l'if i */ després de la clau de tancament de l'if.

/*if (e.target.x > 560) 
{
    e.target.x = -160;
}*/