Comunidad de diseño web y desarrollo en internet online

Problema con AS 3 Loader y parent

Citar            
MensajeEscrito el 29 Jul 2009 08:48 am
Buenos dias gente, antes que nada quiero agradecerles a todos los que responden y postean en el foro ya que con el mismo estoy aprendiendo muchisimo sobre AS.

Paso a contarles

Yo tengo una web toda hecha en flash, donde hay un "index.swf" en el cual con una funcion, llamo a un swf externo llamado "Galeria1.swf"
Hasta ahora, esta todo resuelto, el index llama a la galeria y todo funciona bien, pero, en esa primer galeria aparece en escena (dentro del swf de la galeria) una botonera con 7 botones, para ir a las otras 6 galerias que quedan. (son muchas fotos y las dividi en varias galerias). Mi problema esta aca, yo desde la galeria, clickeando en esos botones tengo que lograr llamar a la misma funcion que utilizo desde el "Index.swf" para que descargue el loader y vuelva a cargar otro, con la galeria correspondiente.

Cada galeria y secciones las cargo (desde el index) con algo asi:

Código ActionScript :

import flash.display.MovieClip;
var Xpos:Number = 0;
var Ypos:Number = 0;
var swf:MovieClip;
var loader:Loader = new Loader();

loader.x = Xpos;
loader.y = Ypos;
addChildAt(loader,0);
function GaleriaClick(event:MouseEvent):void {
   removeChild(loader);
   var GaleriaRequest:URLRequest = new URLRequest("Peliculas/Galeria1.swf");
   loader.load(GaleriaRequest);
   loader.x = Xpos;
        loader.y = Ypos;
   addChildAt(loader,0);
}
function Galeria2Click(event:MouseEvent):void {
   removeChild(loader);
   var Galeria2Request:URLRequest = new URLRequest("Peliculas/Galeria2.swf");
   loader.load(Galeria2Request);
   loader.x = Xpos;
        loader.y = Ypos;
   addChildAt(loader,0);
}
GaleriaBtn.addEventListener(MouseEvent.CLICK, GaleriaClick);
Galeria2Btn.addEventListener(MouseEvent.CLICK, Galeria2Click);


Entonces, concluyendo, y resumiendo, necesito poder llamar a la funcion "Galeria2Click", desde el swf que cargue en el index mismo (osea, Galeria1.swf)

Muchas gracias por la atencion, y espero que me haya expresado bien y puedan entender, ya me lei todo el foro de punta a punta y no encuentro nada aplicable que me resuelva esta situacion, he intentado de mil formas, root, parent, etc etc etc.


Muchas gracias

Mauricio, Lift Grafico

Por liftGrafico

1 de clabLevel



 

safari
Citar            
MensajeEscrito el 29 Jul 2009 09:15 am
Me lié :(
si queremos llamar a una función que está en la película principal desde un .swf que hemos cargado con un loader en principio bastaría con un

Código ActionScript :

//NO va a funcionar
root.tuFuncion()
parent.parent.tuFuncion() //(*)


Lo que ocurre es que, cuando usamos root o parent, Flash NO sabe más que es un objeto del tipo DisplayObject, por eso el anterior código no funciona. DEBEMOS decirle que root (o parent) es ALGO MÁS que un DisplayObject. Ese decirle que es "algo más" se llama "conversión de cast" y, aunque en principio nuestra conversión de cast debería ser a la Clase de la película principal, nos vale con hacer la conversión de cast a MovieClip, esto es

Código ActionScript :

MovieClip(root).tuFuncion()
MovieClip(parent.parent).tuFuncion() //(*)

Sí, una "conversión de cast" no es más que escribir

Código ActionScript :

MovieCip(root)
//ó
(root as MovieClip)

(*)No estoy muy seguro eso del parent.parent -sería cosa de comprobarlo con un "trace", pero, cuando creamos un loader, el contenido está en "content", luego el "padre" es el propio Loader, parent.parent sería donde está el loader.

Por Eliseo2

710 de clabLevel



 

firefox
Citar            
MensajeEscrito el 29 Jul 2009 02:49 pm

Por Zah

BOFH

4290 de clabLevel

27 tutoriales
5 articulos

  Bastard Operators From Hell Editores

Zaragoza, España

firefox
Citar            
MensajeEscrito el 29 Jul 2009 05:32 pm
Muchas gracias por las respuestas, todabia estoy intentando. No pude entender muy bien.

Pero vuelvo a preguntar, el codigo que puso Eliseo

MovieClip(root).tuFuncion()
MovieClip(parent.parent).tuFuncion() //(*)

donde lo cargo?

Te repito simplificado.

Tengo un swf llamado A, donde acabo de cargar otro llamado B.
por ej, quiero poder detener y reproducir "A", con un boton que esta en "B", es decir que la instruccion que le doy al boton , tiene que estar en B.

Muchisimas gracias! y seguire intentando

Por liftGrafico

1 de clabLevel



 

safari

 

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