Cita:
Iniciado por Weahl 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 originalvar valores:Array = new Array("primer valor","segundo valor", "tercer valor",
"cuarto valor", "quinto valor", "sexto valor")
var i:uint = 0;
//Cantidad de clips en el escenario.
var t:uint = valores.length;
//nombre común entre los clips ejemplo:
//boton0, boton1, y así sucesivamente...
var nombre:String = "boton";
for(i=0; i<t; i++){
//obtienes el clip que está en el escenario
var clip:MovieClip = getChildByName(nombre+i) as MovieClip;
//preguntas si existe
if(clip){
//asignas un valor a una propiedad llamada "imprimir"
//que en este caso es el valor de un arreglo
clip.imprimir = valores[i];
//asignas un valor a una propiedad llamada "myindex"
//que en este caso contiene el índice de la iteración
clip.myindex = [i];
//si existe agregas los eventos
addlistenerevent(clip);
}
}
function addlistenerevent(a:MovieClip):void{
//haces que al pasar el mouse sobre el clip
//aparezca la mano como si fuese un botón
a.buttonMode = true;
//asignas evento CLICK
a.addEventListener(MouseEvent.CLICK, sendSoldier);
//asignas evento ROLL_OVER
a.addEventListener(MouseEvent.ROLL_OVER, infoSoldier);
//asignas evento ROLL_OUT
a.addEventListener(MouseEvent.ROLL_OUT, infoSoldierOut);
}
function sendSoldier(a:MouseEvent):void{
//obtienes que clip fue presionado
var clip:MovieClip = a.currentTarget as MovieClip;
trace("Obtienes \""+clip.imprimir+"\"");
trace("Mi índice "+clip.myindex);
}
function infoSoldier(a:MouseEvent):void{
//obtienes que clip por el cual has pasado
var clip:MovieClip = a.currentTarget as MovieClip;
trace("ROLL_OVER "+clip.name);
}
function infoSoldierOut(a:MouseEvent):void{
//obtienes que clip por el cual has salido
var clip:MovieClip = a.currentTarget as MovieClip;
trace("ROLL_OUT "+clip.name);
}
Espero te sea de ayuda.
Saluda Atte.
Claudio Barrera Asencio.