Comunidad de diseño web y desarrollo en internet online

Ayuda!! Arreglos addEventListener y functions

Citar            
MensajeEscrito el 13 Oct 2010 02:20 pm
Hola gente de la comunidad, estoy aprendiendo AS3 y estoy atracado en este problema. Por ahi un experto que sepa darle solución se lo agradeceria.

Tengo 16 botones llamados btn1, btn2, etc
y 16 MC con nombre torre, chimenea, etc (los demas nombres estab en el arreglo)

Necesito controlar con la misma funcion cada mc con cada boton. Pero no quiero escribir 16 veces addEventListener y cada funcion. Como puedo hacer mi arreglo. Lo he estado intentando pero como amarro mi arreglo de addEventListener con cada funcion por cada mc? HELP!!

Código ActionScript :

var myArraybtn = new Array(17);
for (var i = 1; i<=myArraybtn.length-1; i++){
myArraybtn[i] = "btn"+i;
trace(myArraybtn[i]);
}

var myArrayMC = new Array("torre","chimenea","flor","reloj","pelota","triangulo","lentes","pesas","mariposa","jarron","sol","cohete","arbol","llanta","barco","corazon");
trace(myArrayMC);

for each (var b in myArraybtn)
{
    doubleClickEnabled = true;
    addEventListener(MouseEvent.CLICK, onMouseClick);
    addEventListener(MouseEvent.DOUBLE_CLICK, onDobleClick);
    addEventListener(MouseEvent.MOUSE_OVER, onMouseOver);
    addEventListener(MouseEvent.MOUSE_OUT, onMouseOut);
}
//la funcion de doble click llama a otra funcion diferente por cada boton
function onDobleClick(event:MouseEvent):void{
  trace("dobleclick");
}

function onMouseOver(event:MouseEvent):void{
 myArrayMC.gotoAndStop("hover");
  trace("over");
}
 
function onOut(event:MouseEvent):void{
   gotoAndStop("off");
   trace("out");
}
function onMouseClick(event:MouseEvent):void{
   gotoAndStop("on");
   trace("click");
}

Por CLAnonimo

Claber

600 de clabLevel

5 tutoriales
1 articulo

 

Este es un usuario anónimo genérico para las cuentas borradas o perdidas.

firefox
Citar            
MensajeEscrito el 13 Oct 2010 02:44 pm
Mas simple:

Código ActionScript :

var cantButtons:Number = 17
for (var i = 1; i<=cantButton; i++){
   this["btn"+i].addEventListener(MouseEvent.CLICK, onMouseClick);
   (... etc ...)
}


En el onMouseClick recibes una referencia al botón a través de event.target

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 13 Oct 2010 02:49 pm
Pues la verdad, sin ofender, no se por dónde partir en tu código. Hay muchos conceptos mal aplicados. Yo haría algo así:

Código ActionScript :

var botones:Array=[[0,"test"],[1,"test1"]];
var len:uint=botones.length;
var e:String;
for (var i:uint=0; i<len; i++) {
   if (Boolean(botones[i][0])) {
      e=MouseEvent.DOUBLE_CLICK;
   } else {
      e=MouseEvent.CLICK;
   }
   (this[botones[i][1]] as SimpleButton).doubleClickEnabled = true;
   (this[botones[i][1]] as SimpleButton).addEventListener(e,doClick,false,0,true);
}
function doClick(e:Event):void {
   if(e.type == MouseEvent.DOUBLE_CLICK){
      trace("DOBLE PARA: "+e.currentTarget.name)
   }else{
      trace("SIMPLE PARA: "+e.currentTarget.name)
   }
}


Saludos, Hernán . -

Por Hernán

BOFH

6148 de clabLevel

19 tutoriales
23 articulos

Genero:Masculino   REC Desarrollador de GAIA

Marketing & IT

firefox

 

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