Gracias, eres un mounstruo. Le daré un par de vueltas a ver que hago al final.

Por otra parte y respecto a "Lo del Delegate debe funcionar" pues efectivamente estoy de acuerdo contigo pero en este mundo del flash nada es lo que parece y la realidad supera a la ficción. El import del Delegate sí que lo tengo hecho, lo que pasa es que tampoco se como pasarle parámetros. Es decir, si tengo:

miboton.onPress = Delegate.create(this,trazar)

¿cómo hago para pasarle parámetros a la función trazar?

Con:

miboton.onPress = Delegate.create(this,trazar(1))

Llama a la función directamente sin presionar el botón siquiera

Con:

miboton.onPress = Delegate.create(this,trazar,1)

Llama al pulsar pero el 1 no se lo pasa a la función.

Más que nada ya por curiosidad y porque fijo que me puede hacer falta en algún caso...


Un saludo.







From: Miguel Angel Sánchez <[EMAIL PROTECTED]>
Reply-To: asnativos@5dms.com
To: asnativos@5dms.com
Subject: Re: [ASNativos] onPress y llamadas a funciones
Date: Mon, 13 Feb 2006 12:46:31 +0100

Lo del Delegate debe funcionar, tan solo hay que hacer el import correspondiente: mx.utils.Delegate, pero como decía antes creo que es bastante mejor usar el EventDispatcher, te va a resultar mucho más flexible y dejas tu clase como una caja negra que la única información que recibe del exterior son los parámetros de configuración. Para lo que tú quieres sería algo así:

<code>
import mx.events.EventDispatcher;
import mx.utils.Delegate;

class Ventana {
   //variables que requiere EventDispatcher
   public var addEventListener:Function;
   public var removeEventListener:Function;
   private var dispatchEvent:Function;

   public function Ventana(...):Void {
EventDispatcher.initialize(this); //Inicializa las funciones declaradas arriba
       ...
       botonAceptar.onPress = Delegate.create(this, aceptarPressed);
   }

   private function aceptarPressed():Void {
       //disparamos el evento
       //target es una referencia al objeto que lanza el evento (this)
       //type es el nombre del evento
       //podemos enviar otros tantos parámetros como queramos, o ninguno
dispatchEvent({target:this, type:"onAceptar", param1:valor1, param2:valor2 ... paramN:valorN);
   }
   ...
}
</code>

Luego puedes definir oyentes para los eventos en otras clases

<code>
var v:Ventana = new Ventana(1, "AVISO DE ERROR");
v.addEventListener("onAceptar", Delegate.create(this, accionesAceptar));
v.addEventListener("onCancelar", Delegate.create(this, accionesCancelar));

function accionesAceptar(eventObject:Object):Void {
//eventObject es el objeto que contiene las propiedades target, type, param1, param2... definidas al disparar el evento con dispatchEvent
   trace("Evento " + eventObject.type + " capturado");
   trace("El valor de param1 es " + eventObject.param1);
}
</code>

Y esto es todo, espero que te sirva de ayuda, un saludo

Felipe Fernandez Sanchez escribió:
Muchas gracias, lo del Delegate ya lo había probado también y que si quieres arroz Catalina. Si se te ocurre alguna cosa más....De todas formas, lo que trato de hacer es una clase para una ventana de mensajes, al que se le puede decir en el constructor el tipo de ventana (aviso, error, info), el numero de botones a mostrar y las FUNCIONES (y aquí viene el problema que me ocupa) asociadas a cada uno de ellos. De forma que si yo quiero mostrar desde otra clase una ventana de aviso haga:

new Ventana(1,"AVISO DE ERROR",["aceptar""],[onAceptar])

Esto hace que aparezca una ventana de error con un botón Aceptar y que cuando se pulse dicho botón se ejecute la función onAceptar de la clase llamante. Pero mi problema ahora es cómo llamar a esas funciones con parámetros (pasados en otro Array al constructor).

Ahora que tienes toda la información sigues pensando que es conveniente lo del EventDispatcher?
En ese caso harías el favor de explicarlo un poco más.

Gracias, por cierto.


From: Miguel Angel Sánchez <[EMAIL PROTECTED]>
Reply-To: asnativos@5dms.com
To: asnativos@5dms.com
Subject: Re: [ASNativos] onPress y llamadas a funciones
Date: Mon, 13 Feb 2006 11:13:38 +0100

La solución del EventDispatcher la veo más correcta y flexible, te permite añadir/eliminar oyentes a los eventos, en lugar de pasárselos todos por parámetro en el constructor, pero si quieres seguir por donde ibas, haz un 'wrapper' para el onPress y luego llamas a la función con los parámetros que quieras

miboton.onPress = Delegate.create(this, callFunction);
private function callFunction():Void {
   funciones[0](parametro1, parametro2, ...);
}

Felipe Fernandez Sanchez escribió:

Si, pero alguna solución más sencilla no existe? Porque no me creo que no se pueda hacer lo que estoy intentando....

From: Miguel Angel Sánchez <[EMAIL PROTECTED]>
Reply-To: asnativos@5dms.com
To: asnativos@5dms.com
Subject: Re: [ASNativos]  onPress y llamadas a funciones
Date: Mon, 13 Feb 2006 10:18:14 +0100



Felipe Fernandez Sanchez escribió:
Hola, agradecería que me echarais una mano con lo siguiente:

Tengo un símbolo Botón e intento asociarle una función al evento onPress. Después de comprobar que el addEventListener para este objeto no funciona, lo hice con:

El addEventListener no funciona para el botón, pero puedes encapsular el botón dentro de una clase que haga uso de EventDispatcher y dispare un evento cuando salte el onPress, luego registras oyentes para ese evento y ya lo tienes, sin líos de arrays de funciones, parámetros y ámbitos (existe esta palabra en español, Ale, xD )
----------------------------------
Lista ASNativos:asnativos@5dms.com
http://www.5dms.com/listas
----------------------------------


----------------------------------
Lista ASNativos:asnativos@5dms.com
http://www.5dms.com/listas
----------------------------------

----------------------------------
Lista ASNativos:asnativos@5dms.com
http://www.5dms.com/listas
----------------------------------


----------------------------------
Lista ASNativos:asnativos@5dms.com
http://www.5dms.com/listas
----------------------------------

----------------------------------
Lista ASNativos:asnativos@5dms.com
http://www.5dms.com/listas
----------------------------------


----------------------------------
Lista ASNativos:asnativos@5dms.com
http://www.5dms.com/listas
----------------------------------

Reply via email to