Comunidad de diseño web y desarrollo en internet online

Preload AS3 - Carga de SWF externa

Citar            
MensajeEscrito el 26 Feb 2009 02:50 pm
Tengo una consulta ...
Estoy tratando de migrar un preload que tenia desarrollado en AS2 a AS3, y el problema es el contenedor, cuando hago el llamado se van agregando SWF y no se reemplazan, digamos no se como reemplazarlo.
Antes con un loadMovieClip lo solucionabamos... y ahora?

Les muestro.

Código :

function cargaMovieClip(path) {
   //trace(path);
   TweenLite.to(mc_MainContainer, 1, {autoAlpha:0});
   TweenLite.to(preloader, 1, {autoAlpha:1});

   var objLoader:Loader = new Loader();
   var objFileToLoad:URLRequest = new URLRequest(path);
   objLoader.load(objFileToLoad);
   objLoader.contentLoaderInfo.addEventListener(Event.INIT, SWFLoaded);
   objLoader.contentLoaderInfo.addEventListener(ProgressEvent.PROGRESS, showProgress);
   objLoader.contentLoaderInfo.addEventListener(Event.COMPLETE, finalizado);
   
   function SWFLoaded($event:Event):void {
      mc_MainContainer.addChild($event.target.content);
                // el problema esta aqui 
   }
   function showProgress($event:ProgressEvent):void {
      //trace(Math.round(($event.bytesLoaded / $event.bytesTotal) * 100) + " percent loaded so far...");
   }
   function finalizado($event:Event):void {
      TweenLite.to(preloader, 0.5, {autoAlpha:0});
      TweenLite.to(mc_MainContainer, 1, {autoAlpha:1});
   }
}

// Llamo a la funcion de esta manera
cargaMovieClip(mipeliexterna.swf);
 


Lo que no puedo hacer es que envez de que se agreguen SWF al contenedor con addChild reemplace uno por otro.
Bueno agradezco su ayuda.

Por Sanwar

69 de clabLevel



 

Argentina - Tucumán

firefox
Citar            
MensajeEscrito el 26 Feb 2009 03:45 pm
A ver si entendi bien, en tu contenedor tienes un swf y quieres reemplazarlo por el nuevo swf cargado?? si es asi puedes hacer algo asi:

Código ActionScript :

//Validas que por lo menos tenga un hijo
if(mc_MainContainer.numChildren>0){
//en caso de tenerlo lo remueves(estoy suponiendo que solo tienes un swf 
//en tu contenedor asi que solo remueves el primero)
mc_MainContainer.removeChildAt(0);

}
 
//Agregas tu nuevo swf 
 mc_MainContainer.addChild($event.target.content);


Listo en caso de tener un swf en tu contenedor lo reemplazas :) ...espero que si sea eso lo que querias.

Por Angel Roberto

Claber

248 de clabLevel



 

firefox
Citar            
MensajeEscrito el 26 Feb 2009 06:36 pm
Entendiste bien... Muchas gracias.
Pasa que cuesta acostumbrarse a esto de andar viendo que hace uno con los hijos.

Saludos

Por Sanwar

69 de clabLevel



 

Argentina - Tucumán

firefox
Citar            
MensajeEscrito el 26 Feb 2009 11:04 pm
Para eso estamos :wink:

Por Angel Roberto

Claber

248 de clabLevel



 

firefox
Citar            
MensajeEscrito el 04 Mar 2009 07:11 pm
Bueno soluciona en gran parte el problema... pero tengo algunas observaciones.

mc_MainContainer.removeChildAt(0); // Esta linea no remueve totalmente el SWF que cargamos en mc_MainContainer.??
Por ejemplo, hago el proceso de carga, un SWF que contiene un video, llamo la funcion nuevamente, para q cargue otro SWF, y el video desaparece y queda sonando de fondo, si llamo otro video se van superponindo.
Lo que me hace pensar que removeChildAt solo lo hace no visible, pero el objeto sigue ahi.

Existe algo como unloadMovie, unloadMovieClip ?

Por Sanwar

69 de clabLevel



 

Argentina - Tucumán

firefox
Citar            
MensajeEscrito el 04 Mar 2009 08:02 pm
Con removeChild quitas el swf de escena pero sigue cargado, para quitar el sonido puedes usar SoundMixer.stopAll(); esto detiene la reproduccion de todos los canales de sonido y evita que se empalmen, la descarga existe para el objeto loader Loader.unload();

Por Angel Roberto

Claber

248 de clabLevel



 

firefox

 

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