Comunidad de diseño web y desarrollo en internet online

Una funcion para todos los eventos?

Citar            
MensajeEscrito el 09 Feb 2011 09:31 pm
Tengo una movie clip llamada "worldmap" que es ni mas ni menos, un planisferio en vector.

Adentro tengo todos los paises convertidos a simbolos (botones) y a cada uno le asigne como nombre de instancia, el propio de su pais.

por lo tanto, dentro de world map:
____________________
argentina.addEventListener(MouseEvent.CLICK,arg);

function arg(e:MouseEvent):void{
pais.text = ("Argentine");
_____________________

hasta acá genial...
Pero necesito una mano para hacer un evento... que detecte que boton estoy tocando, para no tener que hacerlo con cada país. Estoy seguro alguien me podrá ayudar!


Gracias!

Por calafatec

1 de clabLevel



 

chrome
Citar            
MensajeEscrito el 10 Feb 2011 03:22 pm
Efectivamente se puede. La primera parte del "truco" es añadir el listener a "worldmap".

Código ActionScript :

worldmap.addEventListener(MouseEvent.CLICK,arg);
function arg(e:MouseEvent):void{
   trace(e.target.name)
}

Vemos que haciendo "click" en distintos países salen distintos "nombres".
Desgraciadamente, también vemos que la "propiedad" name es algo así como "instance0", "instance1".... Sí, la propiedad "name" NO tiene nada que ver con el "nombre de instancia". El nombre de instancia es "una variable que hace referencia a"

Así, si editáramos cada símbolo (cada país)y escribiéramos

Código ActionScript :

//En el primer frame de cada país
name="Argentina"
descripcion="Texto de Argentina"

Vemos que ya sí que nos muestra el valor de "name". Igualmente podríamos escribir

Código ActionScript :

trace(e.target.descripcion)


Vale, si no quieres editarte todos los símbolos, todavía hay una solución (no sé si funciona) que es recorrerse todo lo que contenga "worldmap" y, si es un DisplayObject, darle nombre. Repito que no sé si funciona, pero puedes probar a escribir

Código ActionScript :

for (var prop:Object in worldmap) { //nos recorremos todo
                                       //lo que tenga worldmap
   if (worldmap[prop] is DisplayObject) {  //si es un displayObject
      worldmap[prop].name = prop;   //igualamos la propiedad "name" al valor de la "variable"
   }
}

E igualarás

Por Eliseo2

710 de clabLevel



 

firefox
Citar            
MensajeEscrito el 11 Feb 2011 06:48 pm
Eliseo!
Agregué el listener a la movie clip y ya lo tengo funcionando. Por suerte me llama el nombre de la instancia, solamente la marca como "instancexx" si no la tengo declarada. O sea que muy bien. Me ahorre 200 lineas de redundante/obsoleto código gracias a tu script ;)

Ahora voy a intentar que ademas de escribir un text field me ejecute una movie clip con informacion, bandera, etc. Pero es otra historia!

Gracias!

Por calafatec

1 de clabLevel



 

chrome

 

Cristalab BabyBlue v4 + V4 © 2011 Cristalab
Powered by ClabEngines v4, HTML5, love and ponies.