Comunidad de diseño web y desarrollo en internet online

acceder a variable en root

Citar            
MensajeEscrito el 05 Jul 2010 08:53 am
Hola a todos,

tengo un problema de absoluto novato, tengo una película madre que carga otro swf, intento acceder desde ese .swf hijo a una variable de la película madre y no lo consigo, hay que hacer algo "raro"? hace poco pasé a AS3 y no se me había presentado esto, he estado usando el buscador pero no consigo solucionarlo... este es mi código en la peli madre:

Código ActionScript :

var tipoDeArticulo:String="";
var cargadorPeliculas:MovieClip;
var cargaPelis:Loader = new Loader();
.
.
.
.
//el en listener del Loader
cargadorPeliculas=MovieClip(cargaPelis.content);
addChildAt(cargadorPeliculas, 0);
.
.
.
//en la película hija
trace(MovieClip(root).tipoDeArticulo);//da undefined
trace(MovieClip(this.root).tipoDeArticulo);//da undefined
trace(MovieClip(parent.parent).tipoDeArticulo);//da error
trace(MovieClip(parent.parent.parent).tipoDeArticulo);//da error


Es decir, yo tengo esta estructura

peliMadre
|__________CargadorPeliculas
|________________Loader.content (.swf)


¿Alguien puede decirme como tendría que acceder desde ese .swf hijo a la variable tipoDeArticulo situada en el timeLine de la película madre? Es que me he quedado atascado con esto y es de auténtica pena... no se donde la estoy liando :twisted:

Por torpedete

85 de clabLevel



Genero:Masculino  

firefox
Citar            
MensajeEscrito el 05 Jul 2010 09:07 am
La estructura quería decir esta (que no me ha pillado las tabulaciones)

peliMadre -----> CargadorPeliculas (Loader.content)

Por torpedete

85 de clabLevel



Genero:Masculino  

firefox
Citar            
MensajeEscrito el 05 Jul 2010 10:42 am
En la película hija trace(MovieClip(root).parent) me devuelve cargaPelis, que es el loader con el que cargo el .swf hijo

sin embargo trace(MovieClip(root).parent.parent) y trace(MovieClip(root).parent.root) me dan null, ¿por que no me da un nivel superior de ese Loader? No entiendo nada...

Por torpedete

85 de clabLevel



Genero:Masculino  

firefox
Citar            
MensajeEscrito el 06 Jul 2010 06:50 am
¿Alguien puede ayudarme por favor? Es que me he quedado aquí atascado sin poder acceder a root y lo necesito para acabar el proyecto, no entiendo que puede estar fallando... ¿por que puedo acceder a parent y obtener el Loader y no puedo (o no se) acceder al parent de este Loader?

Por torpedete

85 de clabLevel



Genero:Masculino  

firefox
Citar            
MensajeEscrito el 06 Jul 2010 03:01 pm
lo que esta pasando es que el swf hijo quiere acceder al root cuando aun no esta listo, es decir accede antes de que el swf hijo este en el display list del swf madre, esto tiene solucion usando los listeners addeToStage , aqui un ejemplo de a que me refiero :

swf main o madre

Código ActionScript :

import flash.display.MovieClip;
import flash.display.Loader;
import flash.events.Event;
import flash.net.URLRequest;

var foo:String = "hello";

var con:MovieClip = new MovieClip();
addChild(con);

var loader:Loader = new Loader();
loader.contentLoaderInfo.addEventListener(Event.COMPLETE, onComplete);

function onComplete(e:Event):void
{
   var contentSWF:MovieClip = (e.target.content) as MovieClip;
   con.addChild(contentSWF);
}

loader.load(new URLRequest("swfA.swf"));


swfA hijo

Código ActionScript :

import flash.events.Event;
import flash.display.MovieClip;

this.addEventListener(Event.ADDED_TO_STAGE, onInit);

var refRoot:MovieClip;

function onInit(e:Event):void
{
   refRoot = (parent.parent) as MovieClip;
   
   trace("root :" , refRoot);
   trace("foo :", refRoot.foo);
}


Jonathan

Por maneuver

243 de clabLevel



Genero:Masculino  

Mexico City

firefox
Citar            
MensajeEscrito el 08 Jul 2010 02:00 pm
Hola manueuver,

lo primero mil gracias por tu respuesta, acabo de verla, y aunque realmente no era lo que me comentabas, un par de traces puestos al respecto de lo que tu me comentabas me han hecho darme cuenta del problemilla.

Con tu idea del listener al ADDDED_TO_STAGE saqué el valor de la variable que me interesaba y me daba "", lo cual me hizo darme cuenta de que claro, esa variable (por la arquitectura de la aplicación) toma valor DESPUÉS de el addChild del swf cargado, no necesariamente según se hace este addChild, así que problema resuelto :D

De verdad, mil gracias por tu esfuerzo y tu ayuda, me has salvado el culo pero bien bien hecho :)

Por torpedete

85 de clabLevel



Genero:Masculino  

firefox
Citar            
MensajeEscrito el 14 Jun 2011 01:33 am
maneuver !!!! mil gracias estuve parado por un rato en un proyecto del trabajo hasta que llegue aqui, mil gracias men!!

Por javierenap

1 de clabLevel



 

chrome

 

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