Comunidad de diseño web y desarrollo en internet online

Como lanzar un evento estatico...

Citar            
MensajeEscrito el 23 Oct 2005 12:06 pm
Hola.

A ver si me podeis hechar una mano para lanzar un evento estatico, aunque no se si realmente es lo mejor para lo que pretendo hacer, asi que os pongo un pequeño ejemplo de lo que se trata:

Tengo una clase padre ClassA de la que heredan otras dos clases ClassB y ClassC.

ClassB y ClassC tienen una variable estatica de tipo Array u Object que mando a ClassA mediante un metodo de esta que recivira la variable por referencia, si no me equivoco los Array u Object siempre se pasan por referencia.

Y ahora lo que pretendo es que cuando cambie algun valor de la variable Array u Object en la clase ClassA cambien todas las instancias de ClassB o ClassC.

Por ejemplo si ClassB tiene dibujada una X negra quiero que al cambiar el valor color, por ejemplo a rojo, de la variable que pase a ClassA automaticamente todas las instancias de la claseB que haya creadas cambien el color de la X que esta dibujada (en esta caso abria que redibujar imagino).

A ver si me podeis decir algo de por donde mirar o probar.

Muchas gracias y saludos.

Por opotonil

12 de clabLevel



 

msie
Citar            
MensajeEscrito el 23 Oct 2005 12:27 pm
pues si solo quieres cambiar las de la claseB (y no la C) pues en la clase B creas una variable "static" al cambiar el valor de esa variable cambiará en todas (otra cosa es que tendrías que poner algun tipo de listener que cuando cambie esa variable realice el cambio en cada una de las instancias de la clase B)

Si lo que quieres es que cambie B y C .. pues esa variable deberia de ir en la clase A, ahora, no se si tomaran la variable como de la clase A y por tanto de B y C o b y c la reescribiran como propias (dudo esta opcion) Sería basicamente lo mismo que arriba

Por _CONEJO

BOFH

7639 de clabLevel

17 tutoriales
21 articulos

 

firefox
Citar            
MensajeEscrito el 24 Oct 2005 11:09 am
Hola.

Si la parte de la variable estatica, es justo la que tengo hecha y funciona perfectamente (una estatica para ClassB y otra estatica para classC para modificar todas las instancias creadas de ClassB o de ClassC).

Pero con lo que tengo problemas es con el listener pues si al utilizar el metodo cambiarColor de ClassA lanzo un evento con dispatchEvent tan solo lo captura la instancia en la que he utilizado cambiarColor en vez de todas las instancias de esa clase por lo que imagino que tendria que lanzar un evento estatico y al capturarlo determinar si pertenece a ClassB o ClassC y llamar al metodo correspondiente (como por ejemplo redibujar que ya veria si tiene queser estatico o como, todabia no lo he pensado)

Asi que a ver si me podeis hechar una mano con lo de lanzar y capturar el evento estatico.

Muchas gracias y saludos.

Por opotonil

12 de clabLevel



 

msie
Citar            
MensajeEscrito el 24 Oct 2005 01:01 pm
no, los metodos static son métodos "de clase" pero eso no implica que se ejecuten en todas las instancias de la clase, si no que directamente no hace falta crear una instancia de la misma para ejecutarlo. Los más comunes son los de la clase Math ... ahi ejecutas un método, pero no hay instancia, incluso si las hubiera solo obtendrías un resultado ...

Por _CONEJO

BOFH

7639 de clabLevel

17 tutoriales
21 articulos

 

firefox
Citar            
MensajeEscrito el 25 Oct 2005 12:47 pm
Trata de hacer lo siguiente:

Vas a Necesitas un Array static donde guardas las referencias de todas las instancias de tu classA o de tu classB o de tu classC según lo que desees.

1. Una vez que ejecutes cambiarColor, envía el evento.

2. Adiciona el listener y escuchá cual es la instacia desde la que se ejecutó cambiar color

3. Una vez que una instacia de A dispare el evento, le pedis a esa instacia el array y el color y usando las refencias a las otras instacias les haces el cambio, desde luego con un método que no te vaya a disparar nuevamente el evento.

Saludos

Por muro

13 de clabLevel



Genero:Masculino  

Medellín - Colombia

msie
Citar            
MensajeEscrito el 26 Oct 2005 11:32 am
Funciona perfectamente. Muchas gracias.

Imagino que no pueda determinar el nombre de una clase o cualquier otra cosa que la identifique de manera unica a no ser que incluya una propiedad directamente yo ¿? Pues imagino que el algoritmo mejorase bastante:

Actualmente:

//Para insertar una nueva instancia:
array.push(objeto);
//para recorrer el array estatico:
for(var i:Number = 0; i < array.length; i++)

Con la propiedad:

//Para insertar una nueva instancia:
array[propiedad].push(objeto);
//para recorrer el array estatico:
for(var i:Number = 0; i < array[propiedad].length; i++)

Por opotonil

12 de clabLevel



 

msie

 

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