Comunidad de diseño web y desarrollo en internet online

escuchar eventos sin saber el origen

Citar            
MensajeEscrito el 31 Ene 2010 02:08 am
Hola, me preguntaba si se puede escuchar un evento sin necesidad de saber en donde se genera, es que mi aplicación está dividida en módulos y algunos de estos son cargados en diferentes formas, me gustaría saber si se puede añadir un eventlistener sin necesidad de saber donde se origina el evento, por ahora estoy haciendo esto:

Código :

 Application.application.dispatchEvent(new Event("mi_evento"));
y

Código :

 Application.application.addEventListener("mi_evento",mi_funcion) 
pero me parece que no es la forma más elegante de hacerlo, me gustaría poder hacer algo así:

Código :

 addEventListener("mi_evento",mi_funcion) 
y que pudiera captar el evento sin importar donde se genere.

Por Xyrer

628 de clabLevel

1 tutorial

Genero:Masculino  

Android App Development

chrome
Citar            
MensajeEscrito el 01 Feb 2010 12:48 pm
La misma sintaxis de addEventListener obliga a escuchar a alguien (incluso si no pones a quien, asume this) Lo que suelen hacer los frameworks es tener un "bus de eventos", una especie de escuchador de todo al cual subscribirse, también usualmente esto requiere de una especialización de los eventos. Mírate cualquiera de los frameworks más populares

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 01 Feb 2010 01:57 pm
Eso significaría tener que implementar MVC solo para poder hacer eso?

Por Xyrer

628 de clabLevel

1 tutorial

Genero:Masculino  

Android App Development

chrome
Citar            
MensajeEscrito el 01 Feb 2010 02:04 pm
En situaciones simples lo agregarías directamente al elemento, estás planteando una indirección, es decir intentas un diseño. Usa un singleton como bus de datos y agrega los listener a esa clase ... y si te parece muy complicado, considera seguir como lo tienes, quizás el escenario sea simple y no haga falta tanto

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 01 Feb 2010 02:37 pm
si, creo que seguiré haciéndolo de la misma forma, supongo que la forma elegante de hacerlo si es con singleton. También le echaré un vistazo a signals, dicen que son mucho mejores en rendimiento que los eventos. gracias.

Por Xyrer

628 de clabLevel

1 tutorial

Genero:Masculino  

Android App Development

chrome
Citar            
MensajeEscrito el 01 Feb 2010 03:29 pm
No sé si declarando el evento con bubbles=TRUE éste se llegará a propagar a Application. Vamos, el dispatchEvent lo haces como

Código ActionScript :

dispathcEvent(new Event("EVENTO",true,true)

y el listener se lo añades a aplication.
Vamos, será el "padre de todos" quien escuche el evento (algo así como cuando añadimos un evento MOUSE_DOWN a un Menú con varios botones y tenemos en currentTarget el menú y en el target el botón pulsado)

Por Eliseo2

710 de clabLevel



 

firefox
Citar            
MensajeEscrito el 01 Feb 2010 03:59 pm
es precisamente lo que estoy haciendo, lo que quería es no tener que referenciarlo a Application, porque eso era supuestamente una mala costumbre en flash, referenciar a _root era visto como pecado mortal y pues Application.application es lo mismo, pero si es necesario, lo seguiré haciendo igual. Gracias.

Por Xyrer

628 de clabLevel

1 tutorial

Genero:Masculino  

Android App Development

chrome
Citar            
MensajeEscrito el 02 Feb 2010 04:31 pm
Xyrer, el evento lo tienes que añadir (no tienes por qué añadirlo al mismo "objeto" al que le ocurre, ni en el mismo momento). Por tanto, te vale con, en la película principal escribir

Código ActionScript :

addEventListener(...)

Por Eliseo2

710 de clabLevel



 

firefox
Citar            
MensajeEscrito el 02 Feb 2010 05:08 pm
Creo que ya había puesto en claro que eso es lo que estoy haciendo, puedes ver mi primer post, y es precisamente lo que quería evitar, debido a que uso muchos módulos, si no usara módulos o componentes custom no tendría ese problema, mi intención era que un módulo pudiera funcionar sin necesidad de saber quien lo cargó y sin referenciar a la aplicación principal, pero sin necesidad de aplicar MVC, que aumentaría mi código de forma exponencial, que sería tonto si eso es lo que quiero evitar.

Creo que ya quedó definido que no se puede, si se pudiera cerrar el thread lo haría, caso cerrado. Gracias por su interés y respuestas a todos.

Por Xyrer

628 de clabLevel

1 tutorial

Genero:Masculino  

Android App Development

chrome

 

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