Comunidad de diseño web y desarrollo en internet online

acceso a una variable del root

Citar            
MensajeEscrito el 16 Sep 2011 07:35 am
Buenas, gente.

Vuelvo con una duda de principiante. Es sobre el ámbito de las variables. Ya sé que es un tema muy manido, pero me estoy volviendo loco y ya no sé qué hacer.

En mi antiguo mundo del AS2, si yo declaraba una variable en la línea de tiempo proncipal, podía acceder a ella desde cualquier otra línea de tiempo anteponiéndo "_root".

Código :

//línea de tiempo principal
var texto:String = "este es el texto dinámico";

Código :

//código en el primer frame del movieclip "elClip"
trace(_root.texto);

Obviamente, la salida del trace era el valor de la varioable "texto" de la línea de tiempo principal.

En AS3 me estoy encontrando con que no puedo acceder a esas variables, por lo que algo estoy haciendo mal y no sé qué es.

El tema es con una variable loader que me carga unos textos:

Código :

var datos:URLRequest = new URLRequest(dir + laPeli+".txt");
var datosCarga:URLLoader = new URLLoader();
datosCarga.dataFormat = URLLoaderDataFormat.VARIABLES;
datosCarga.addEventListener (Event.COMPLETE, resuelveExtData);
datosCarga.load (datos);

Esto me lo hace en el frame 1 de la línea de tiempo principal. Si yo en el frame 25 de la misma línea de tiempo le pongo:

Código :

trace(datosCarga.data.texto1);

en la ventana de salida me aparece el valor de la variable texto1 sin problemas.
En ese mismo frame tengo puesto el movieclip "elClip". Si en el frame 1 de su línea de tiempos pongo:

Código :

trace(root.datosCarga.data.texto1);

me da un error diciendo que no existe esa propiedad. He probado con stage, con parent, con this.parent, con this.root,... con todo lo que se me ha ocurrido, y el resultado ha seguido siendo el mismo error.

¿Me podéis indicar cómo hacerlo bien?

Gracias miles.

Por CidDeMizar

81 de clabLevel



 

firefox
Citar            
MensajeEscrito el 16 Sep 2011 02:57 pm
La variable es accesible cuando se ejecuta resuelveExtData, que es el callback que le pusiste para cuando termine de cargar

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 17 Sep 2011 08:42 am
Gracias Jorge, pero el resuelveExData sólo es una función que hace ciertas operaciones después de cargar las variables externas, además de poner en funcionamiento la película (ya que la tengo detenida en el frame 1 hasta que cargan las variables).

El problema es que yo en el frame 15 tengo un movieclip. Si en el frame 15 en la línea de tiempos principal hago un trace de datosCarga.data.texto1, aparece el valor correctamente, o sea, la variable está bien cargada y es accesible.

El problema es que desde el movieclip que tengo puesto en ese mismo frame, no puedo acceder a esa variable.

Si desde el primer frame de la linea de tiempo de ese movieclip intento algo como trace(root.datosCarga.data.texto1) me da error de que no se encuentra esa propiedad. Como bien te he comentado, desde la línea de tiempo principal la variable está accesible. El problema es acceder a ella desde otra línea de tiempo. No sé si me he explicado.

Muchísimas gracias.

Por CidDeMizar

81 de clabLevel



 

firefox
Citar            
MensajeEscrito el 17 Sep 2011 02:07 pm
Setea una variable en root con el resultado desde resuelveExtData

Código ActionScript :

var cadena:String;
function resuelveExtData(evt:Event):void{
   (...)
   cadena = this.data.texto1
}


Luego para accederlo desde cualquier lado tienes que hacer un cast

MovieClip(root).cadena

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 18 Sep 2011 05:05 pm
Ok Jorge. Muchísimas gracias. Eso era lo que me faltaba.

Un aludo

Por CidDeMizar

81 de clabLevel



 

firefox

 

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