Tutorial 6 - Animación con ActionScript 3.0

Paso 15 de 19

Para ello tenemos que escribir en primer lugar el nombre del parámetro del evento que hemos puesto en la función (e en nuestro caso). Después añadimos la propiedad target. Con esto se hará referencia al objeto que disparó la acción al recibir el evento.

Por lo tanto, si sustituimos dentro de las funciones el nombre de la instancia por e.target, conseguiremos tener una referencia directa a los objetos que han enviado la función.

Para comprobarlo en la función drag, además de sustituir cloud1_mc por e.target, añadiremos un trace que nos muestre el nombre (name) de la instancia que desencadena el evento.

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

Al no estar el contenido del trace entre comillas, la función no escribe literalmente lo que hemos escrito entre paréntesis, sino su valor (en este caso es un nombre). De esta manera, veremos que al pulsar sobre cada nube el panel de salida nos muestra su nombre.

Añadimos e.target sustituyendo a cloud1_mc en todas las funciones.

Ahora tenemos un problema con las posiciones que habíamos determinado en el condicional if, ya que al tener la segunda nube más profundidad deberíamos distanciar ambos extremos.

Una forma de saber aproximadamente estos valores es cambiar el trace de la función drag para que nos muestre la posición x del clip sobre el que clicemos:

trace(e.target.x);

Después desactivamos temporalmente el if de la función wind convirtiéndolo en un comentario añadiendo /* antes del if y */ después de la llave de cierre del if.

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