Ver Mensaje Individual
  #4 (permalink)  
Antiguo 31/08/2010, 06:57
polo_W12
 
Fecha de Ingreso: enero-2008
Ubicación: Concepción, Chile
Mensajes: 76
Antigüedad: 16 años, 10 meses
Puntos: 3
Respuesta: EventListener para eventos de Mouse

Cita:
Iniciado por Weahl Ver Mensaje
Pero el caso es que quiero poner como unos 10 botones con sus respectivos eventListener, ¿no ralentizará eso el funcionamiento del juego?

Otra pregunta:

¿Es posible hacer algo para que, con solo 3 eventListener (click, roll over y roll out), pueda usarlo para todos los botones, en plan que cuando pulse en uno me devuelva un valor y si pulso en otro me devuelva otro valor diferente, así no lleno el código de eventListener y de funciones para cada botón.



Muchísimas gracias.

Amigo sabes se soluciona de la siguiente manera aunque yo no estoy acostumbrado a trabajar con botones solo con clips, por que son más versátiles.

Código ACTIONSCRIPT:
Ver original
  1. var valores:Array   = new Array("primer valor","segundo valor", "tercer valor",
  2.                                 "cuarto valor", "quinto valor", "sexto valor")
  3. var i:uint          = 0;
  4. //Cantidad de clips en el escenario.
  5. var t:uint          = valores.length;
  6. //nombre común entre los clips ejemplo:
  7. //boton0, boton1, y así sucesivamente...
  8. var nombre:String   = "boton";
  9.  
  10.  
  11. for(i=0; i<t; i++){
  12.     //obtienes el clip que está en el escenario
  13.     var clip:MovieClip      = getChildByName(nombre+i) as MovieClip;
  14.     //preguntas si existe
  15.     if(clip){
  16.         //asignas un valor a una propiedad llamada "imprimir"
  17.         //que en este caso es el valor de un arreglo
  18.         clip.imprimir       = valores[i];
  19.         //asignas un valor a una propiedad llamada "myindex"
  20.         //que en este caso contiene el índice de la iteración
  21.         clip.myindex        = [i];
  22.         //si existe agregas los eventos
  23.         addlistenerevent(clip);
  24.     }
  25. }
  26.  
  27. function addlistenerevent(a:MovieClip):void{
  28.     //haces que al pasar el mouse sobre el clip
  29.     //aparezca la mano como si fuese un botón
  30.     a.buttonMode        = true;
  31.     //asignas evento CLICK
  32.     a.addEventListener(MouseEvent.CLICK, sendSoldier);
  33.     //asignas evento ROLL_OVER
  34.     a.addEventListener(MouseEvent.ROLL_OVER, infoSoldier);
  35.     //asignas evento ROLL_OUT
  36.     a.addEventListener(MouseEvent.ROLL_OUT, infoSoldierOut);
  37. }
  38.  
  39. function sendSoldier(a:MouseEvent):void{
  40.     //obtienes que clip fue presionado
  41.     var clip:MovieClip = a.currentTarget as MovieClip;
  42.     trace("Obtienes \""+clip.imprimir+"\"");
  43.     trace("Mi índice "+clip.myindex);
  44. }
  45.  
  46. function infoSoldier(a:MouseEvent):void{
  47.     //obtienes que clip por el cual has pasado
  48.     var clip:MovieClip = a.currentTarget as MovieClip;
  49.     trace("ROLL_OVER "+clip.name);
  50. }
  51.  
  52. function infoSoldierOut(a:MouseEvent):void{
  53.     //obtienes que clip por el cual has salido
  54.     var clip:MovieClip = a.currentTarget as MovieClip;
  55.     trace("ROLL_OUT "+clip.name);
  56. }

Espero te sea de ayuda.

Saluda Atte.
Claudio Barrera Asencio.

Última edición por polo_W12; 31/08/2010 a las 07:07 Razón: Me equivoqué.