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;
}*/