Comunidad de diseño web y desarrollo en internet online

refrescar carga externa varias peliculas en un Movieclip AS3

Citar            
MensajeEscrito el 10 Mar 2009 04:17 pm
En mi area de trabajo tengo:

- siete botones (uno_btn, dos_btn, tres_btn ....... siete_btn)
- un preloader (preloader_mc)
- y un MovieClip (ventana_mc) vacio.

La idea es que al dar click a cualquiera de los botones me cargue una pelicula externa; logro que todos carguen una pelicula diferente dentro de "ventana_mc", pero el problema es que si doy click a uno y luego al otro, las peliculas se van montando una sobre otra. Entonces ¿Como puedo hacer para que el MovieClip borre su contenido cada vez que de click a uno de los botones?. Aqui les pongo mi codigo, he provado con removeChild e incluso encotre una pista para lo que quiero hacer, pero esta última solo me funciona dando click directamente al movieclip. Ahora, si alguien tiene una forma más practica y sencilla de hacerlo mucho que mejor. Gracias.

Código :

//////////***************BOTONES

uno_btn.addEventListener(MouseEvent.CLICK, uno);
function uno(e:MouseEvent):void{
   hace("Movie1.swf");
}


dos_btn.addEventListener(MouseEvent.CLICK, dos);
function dos(event:MouseEvent):void{
   hace("Movie2.swf");
}

.
.
.
.

siete_btn.addEventListener(MouseEvent.CLICK, siete);
function siete(event:MouseEvent):void{
   hace("Movie7.swf");
}

/////////****PARA QUE COMIENCE OCULTO EL PRELOADER

preloader_mc.visible=false;

/////////*********** LA FUNCION

function hace(a):void{   
var cargador:Loader = new Loader();
cargador.contentLoaderInfo.addEventListener(Event.OPEN, onOpen);
cargador.contentLoaderInfo.addEventListener(ProgressEvent.PROGRESS, onProgress);
cargador.contentLoaderInfo.addEventListener(Event.COMPLETE, onComplete);

cargador.load(new URLRequest(a));

function onOpen(e:Event):void{
preloader_mc.visible=true;   
}

function onProgress(e:ProgressEvent):void{
   var porc:Number=Math.round((e.bytesLoaded * 100)/e.bytesTotal);
   preloader_mc.porc_txt.text=porc + "%";
   preloader_mc.gotoAndStop(porc);
}

function onComplete(event:Event):void{
preloader_mc.visible = false;      
ventana_mc.addChild(cargador);
cargador.removeEventListener(Event.COMPLETE, onComplete);
}
}
/////////************AQUI LA PISTA

ventana_mc.addEventListener(MouseEvent.CLICK, clicked);

function clicked(event:MouseEvent):void {
    ventana_mc.removeChild(DisplayObject(event.target)); 
}

Por Scarecrow

7 de clabLevel



 

msie7
Citar            
MensajeEscrito el 10 Mar 2009 09:51 pm
Si vas a trabajar con AS3 es mejor que pienses en estructurar tu proyecto por medio de clases, si deseas trabajar de esta manera mejor sigue utilizando AS2, de lo contrario te generará problemas a la corta o la larga. Ahora vamos a tu problema.

Si varios botones hacen lo mismo, intenta crear por medio de un ciclo un solo script para todos, por ejemplo nombra a tus botones boton_1, boton_2 y boton_3, esto sería una solución:

Código ActionScript :

var i:uint;
var cantidad:uint = 7;

for(i = 0; i < cantidad; i++){

    this["boton_" + i].addEventListener(MouseEvent.CLICK, hitButton);

}

function hitButton(evt:MouseEvent):void{
   
   var nombre:String = evt.target.name;
   var numero:uint = Number(nombre.replace("boton_", ""));
   
   hace("Movie" + numero + ".swf");
   
}


Ahora para lo que preguntas la solución es eliminar el displayObject que contiene la ventana antes de añadir el otro:

Código ActionScript :

function onComplete(event:Event):void {
   
   //---Si existe un loader dentro de la ventana eliminarlo
   if(ventana_mc.getChildByName("loader")){
      
      ventana_mc.removeChild(ventana_mc.getChildByName("loader"));
      
   }
   
   //---Añadir el loader a la ventana con un nombre específico
   ventana_mc.addChild(cargador).name = "loader";
   
   
   preloader_mc.visible = false;
   cargador.removeEventListener(Event.COMPLETE, onComplete);
   
}

Por elchininet

Claber

3921 de clabLevel

17 tutoriales

Genero:Masculino  

Front-end developer at Booking.com

firefox
Citar            
MensajeEscrito el 11 Mar 2009 08:12 pm
Muchas gracias por tu ayuda elchininet. Vere que tal me va con tu sugerencia.

Por Scarecrow

7 de clabLevel



 

msie7

 

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