Comunidad de diseño web y desarrollo en internet online

¿cómo comunicar objetos de una clase con otra?

Citar            
MensajeEscrito el 07 Jul 2008 11:30 am
:kira: Muy buenas....
Tengo un super cacao en la cabeza, y por mucho que lo miro y remiro no consigo entenderlo del todo...
A ver, como lo explico... tengo un archivo arch1.fla que al ejecutarse carga otro arch2.fla. En arch2.fla tengo unos objetos en el escenario respectivamente "fecha1" (dinamyc text), "fecha2" (dinamyc text) y calendario (MovieClip, que contiene una imagen). Cada objeto tiene su propia clase en donde paso los eventos y las acciones que tiene cada uno.
Al pulsar el MovieClip "calendario.addEventListener(EventMouse.CLICK, cargarCalendario);" se carga otro archivo "arch3", que contiene el calendario con su clase correspondiente también, el cuál crea dinámicamente una cajita por cada dia que tiene el mes tambien con su clase... La cajita tiene un evento "EventMouse.CLICK" que cuando pulsa guarda el dia/mes/anio en una variable dia(String).
Pues bien, cómo podría hacer para que el "arch2.fecha1.text" coja el contenido de la variable "dia" del arch3...

Saludos :|

Por Uruviel

48 de clabLevel



Genero:Femenino  

msie7
Citar            
MensajeEscrito el 07 Jul 2008 11:47 am

Por Zguillez

BOFH

10744 de clabLevel

85 tutoriales
17 articulos
3 ejemplos

Genero:Masculino   Bastard Operators From Hell Héroes Team Cristalab Editores

BCN

safari
Citar            
MensajeEscrito el 07 Jul 2008 12:07 pm
Ya lo he estado mirando y no me aclaro... entiendo que se pueden comunicar las clases, pero no sé como pasar de una a otra valores de objetos o variables. Llevo mirando ese tip 2días e intentando entenderlo, pero cuando lo intento poner en mi aplicación me dan 20000 errores... o la 1ºclase no escucha el evento de la 2º...

Vamos que ya no sé que más probar, por eso recurro a ustedes...
:oops:
Saludos

Por Uruviel

48 de clabLevel



Genero:Femenino  

msie7
Citar            
MensajeEscrito el 07 Jul 2008 12:39 pm
Hola. Si sigues el ejemplo del tip, lo unicos que tendrias que hacer es que la clase Dispatcher contenga una variable con un setter y un getter con el valor del dato que quieras pasar de una clase a la otra.
Desde la clase donde haces el "click" asignas ese valor a la valiable de la clase dispatcher y haces que dispare el evento para que lo detecte tu otra clase. Esa otra clase detecta el evento, recupera el valor de la variable desde la clase Dispatcher y asiga ese valor al Field...
No se si te he aclarado algo o no..

Por Zguillez

BOFH

10744 de clabLevel

85 tutoriales
17 articulos
3 ejemplos

Genero:Masculino   Bastard Operators From Hell Héroes Team Cristalab Editores

BCN

safari
Citar            
MensajeEscrito el 08 Jul 2008 06:27 am
Muchas gracias por la aportación, voy a intentar hacer lo que me dices, aunque ya te digo que ando un poco perdida con esto de la comunicación entre clases :oops:

Te cuento desde que lo intente a ver que tal.

^^

Por Uruviel

48 de clabLevel



Genero:Femenino  

msie7
Citar            
MensajeEscrito el 08 Jul 2008 08:10 am
Hola otra vez, ya he conseguido que me escuche el evento, pero no entiendo muy bien lo del getter y el setter... :oops:
Me podrías poner un ejemplo que lo haga Zguillez? :alabado:

Por Uruviel

48 de clabLevel



Genero:Femenino  

msie7
Citar            
MensajeEscrito el 08 Jul 2008 05:34 pm

Uruviel escribió:

Hola otra vez, ya he conseguido que me escuche el evento, pero no entiendo muy bien lo del getter y el setter... :oops:
Me podrías poner un ejemplo que lo haga Zguillez? :alabado:

Un getter y un setter no son mas que funciones para asignar (setter) o recuperar (getter) valores de una propiedad que tu tengas en tu clase, un ejemplo sencillo seria:

Código :

private var _variable:Number;
//la funcion de set recibe un valor del tipo de dato de la variable que contendra el valor
//pero devuelve nada
public function set variable(value:Number):void {
    _variable = value;
    if(_variable < 0) {
        trace("menor a 0");
    } else if(_variable == 0) {
        trace("es 0");
    } else if(_variable > 0) {
        trace("mayor a 0");
    }
}
la function de get devuelve un valor del tipo de dato de la variable, pero no recibe valor
public function get variable():Number {
    return _variable;
}

y en tu codigo vas a usar varibale y no _variable pues la segunda esta en un ambito privado.

Código :

variable = 9;//en este momento va a ejecutar el trace del setter
trace(variable);//imprime 9

Saludos! :wink:

Por master_of_puppetz

Claber

2483 de clabLevel

7 tutoriales
3 articulos

Genero:Masculino   Premio_Secretos

WebDev (Flex + PHP + JS)

firefox
Citar            
MensajeEscrito el 09 Jul 2008 10:01 am
Gracias, gracias, gracias ^^

Ya lo he conseguido!!!! Uff... que quebradero de cabeza me ha supuesto, jejeje.
Bueno, muchas gracias a los 2, no sé lo que habría hecho sin vuestra ayuda :love:

Por Uruviel

48 de clabLevel



Genero:Femenino  

msie7

 

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