Comunidad de diseño web y desarrollo en internet online

Problema con llamado a función desde un SWF externo...

Citar            
MensajeEscrito el 11 Ene 2011 01:09 am
Hola gente, les cuento el problema que tengo...

Resulta que tengo una aplicación que navega una cierta estructura a la que se va accediendo cargando SWF externos...
Para explicarme mejor, tengo un swf de base, que carga otros externos los cuáles tienen sistemas de navegación independientes.
Por ej. en el caso de un BARCO por ej. tengo un swf base, que carga en un primer SWF externo el mapa del barco completo... si en ese SWF hacemos click en por ej. la sala de máquinas, cargamos otro SWF con la sala de máquinas y tenemos que descartar el nivel anterior... y así sucesivamente para navegar todo el modelo.

Bueno, el tema es que estoy tratando de manejar las cargas desde la clase principal del documento pero han surgido varios problemas. EL más grave... es que no estoy pudiendo llamar a una función desde un SWF cargado, que está en la clase del documento principal...

Aquí tengo más o menos el codigo.

Esto primero sería la función en la clase de documento que carga la pieza correspondiente...

Código ActionScript :

      var entrada:Loader;
      var direccion:String;
      var peticion:URLRequest;

public function cargarPieza(codPza):void
      {
         direccion:String = "client/unidad/swf/" + codPza + ".swf";
         peticion:URLRequest = new URLRequest(direccion);
         entrada.contentLoaderInfo.addEventListener(Event.COMPLETE, cargaCompletaPieza);
         entrada.contentLoaderInfo.addEventListener(ProgressEvent.PROGRESS, cargaProgresoPieza);
         entrada.load(peticion);
      }

      public function cargaCompletaPieza(event:Event)
      {
         addChild(event.target.content);
         entrada.contentLoaderInfo.removeEventListener(Event.COMPLETE, cargaCompletaPieza);
         entrada.contentLoaderInfo.removeEventListener(ProgressEvent.PROGRESS, cargaProgresoPieza);
      }

      public function cargaProgresoPieza(event:ProgressEvent)
      {
         var porcentaje = event.bytesLoaded / event.bytesTotal;
      }


Ahora bien... dentro del SWF que se carga... el primero de ellos... tengo el siguiente código para cargar una nueva parte en el contenedor principal. Los elementos M2D1 al M2D5 son botones que representan subpiezas que sirven para disparar (cargar) SWF externos en los cuales se observan con mayor detalle. El nombre del boton, que lleva el nombre de la pieza se pasa a la función en la línea de tiempo principal... para cargar un nuevo SWF...

Código ActionScript :

 

M2D5.addEventListener(MouseEvent.CLICK, verPieza);
M2D4.addEventListener(MouseEvent.CLICK, verPieza);
M2D3.addEventListener(MouseEvent.CLICK, verPieza);
M2D2.addEventListener(MouseEvent.CLICK, verPieza);
M2D1.addEventListener(MouseEvent.CLICK, verPieza);

var carga:Loader;
var nombrepieza:String;

function verPieza(event:MouseEvent):void{
   nombrepieza = event.target.name;
   event.target.parent.parent.cargarPieza(nombrepieza);
}



El problema, es que aparentemente no puedo acceder a la función cargarPieza de esta manera. He leído bastante y he caído en algunos conceptos algo confusos para mí como CASTING o cosas así que me parece que podrían funcionar... pero la verdad no le encuentro la vuelta.

Otra cosa que quisiera lograr y que no he podido, es, que al momento de presionar un boton (ej. M2D1) descargue o haga un unload de la película desde donde ejecuté el comando, para que las películas cargadas se vayan eliminando a medida que se carguen nuevas...

Bueno muchachos, bastantes problemas tengo, quisiera si alguien pudiera darme una mano con esto, les agradeceria ya que tengo que resolverlo cuantos antes o me cocinan! ja ja.
Un gran saludo a todos los del foro.

Por eldoctorgonzo

2 de clabLevel



 

firefox
Citar            
MensajeEscrito el 11 Ene 2011 01:31 am
Prueba algo así:

MovieClip(root).cargarPieza(nombrepieza);

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 11 Ene 2011 11:24 pm
Me he roto la cabeza buscando una solución a esto y aún no le pego...
Busqué todas las formas de hacer referencia al parent, pero parece que es imposible.

Lo que se me ocurrió es trabajar todo con clases... pero la verdad no se si está bien...
es decir... trabajar con una clase de documento main.as
luego una clase que tenga las funciones de carga de los swf controladorescarga.as
y después una clase para la película que se carga movie.as

La pregunta es... si yo importo una clase desde main, obtengo acceso a todas las funciones públicas?
cómo debo hacer? debo instanciar esa clase para poder ejecutar las funciones públicas?

Por eldoctorgonzo

2 de clabLevel



 

firefox
Citar            
MensajeEscrito el 12 Ene 2011 07:59 am
ya sé que es "viejito" post
si no te gusta puedes buscar "comunicación entre clases"

Por Eliseo2

710 de clabLevel



 

firefox

 

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