Comunidad de diseño web y desarrollo en internet online

Añadir eventos dinámicamente a un boton

Citar            
MensajeEscrito el 09 Mar 2009 10:34 am
Hola,

estoy intentando crear una botonera que lee desde xml las características de cada botón (nombre, tooltip, aspecto en reposo, activo y presionado, posición x, posición y y acción del botón). Éste es mi código para la función que crea la botonera hasta el momento:

Código :

private function initToolbar(toolbarData:XMLList):void {
         var xPosition:Number;
         var yPosition:Number;
         var upButton:String;
         var overButton:String;
         var downButton:String;
         var name:String;
         
         var buttonList:Array = new Array();
         var myButton:SimpleButton;
         
         // Crear la botonera (contenedor para los botones)
         toolBar = new Sprite();
         addChild(toolBar);
                  
         for (var i:String in toolbarData.button) {
            // Obtener los datos del xml
            xPosition = toolbarData.button[i].x;
            yPosition = toolbarData.button[i].y;
            upButton = toolbarData.button[i].normalimg;
            overButton = toolbarData.button[i].overimg;
            downButton = toolbarData.button[i].downimg;
            name = toolbarData.button[i].name;
            action = toolbarData.button[i].action;
            
            // Crear el botón
            myButton = createButton(xPosition, yPosition, upButton, overButton, downButton);            
            buttonList[name] = myButton;
            
            // Añadir evento
            buttonList[name].addEventListener(MouseEvent.MOUSE_UP, manageButtonAction);
         } 
      }


En este caso, la función que se ejecuta en MOUSE_UP es manageButtonAction para todos los botones. Pero lo que yo quiero es que se ejecute la función indicada por la variable action, que puede tomar valores "up()", "down()", "left()", "top()", "fullscreen()".

La idea es poder pasarle directamente al EventListener el nombre de esas funciones (no me deja hacerlo así, me da error: Error de conversión forzada: no se puede convertir "left()" en Function) o que, efectivamente, se ejecute la funcion manageButtonAction, pero que pueda enviarle un parametro especificando que funcion quiero que se ejecute.

Espero haberme explicado bien, aunque puede que no haya quedado bien clara la duda porque para mi as3 es todavía bastante lioso. Si creeis que hay algo que debo explicar mejor, por favor, decidmelo.

Gracias y un saludo.

Por akhasis

75 de clabLevel



 

firefox
Citar            
MensajeEscrito el 09 Mar 2009 10:37 am
Puedes identificar quien generó el evento usando event.target, luego allí decides que función invocar según que botón haya generado el evento

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 10 Mar 2009 07:36 am
Muchas gracias, gracias a tu consejo he conseguido hacerlo funcionar.

Un saludo.

Por akhasis

75 de clabLevel



 

firefox

 

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