Comunidad de diseño web y desarrollo en internet online

quitar el swf anterior en AS3

Citar            
MensajeEscrito el 27 Nov 2009 10:10 pm
Hola amigos

Algunos es posible que me conozcáis por temas similares, pero es que no acabo de dar en la clave. Tengo esto:

Código ActionScript :

function abrir (e:Event) {var contenedor = new Loader();
addChild(contenedor);
contenedor.load(new URLRequest("1sol_scroll.swf"));
contenedor.x = 20
contenedor.y= 300
}

function abrir2 (e:Event) {var contenedor = new Loader();
addChild(contenedor);
contenedor.load(new URLRequest("1huertas_scroll.swf"));
contenedor.x = 20
contenedor.y= 300
}



boton_1. addEventListener (MouseEvent.CLICK, abrir);
boton_2. addEventListener (MouseEvent.CLICK, abrir2);


stop();


Mi duda es qué puedo añadirle a las funciones para que me retiren el swf anterior cuando introduzco uno nuevo? conozco el removeChild pero no sé qué atributo darle para que quite el anterior y así el nuevo no aparezca encima.

Muchas gracias

Por bohedrius

30 de clabLevel



 

firefox
Citar            
MensajeEscrito el 27 Nov 2009 10:31 pm
seria mas facil si usas un solo Loader y un contenedor como en ambos ejercios que te puse anteriormente , esto es workflow si se puede decir, crear children y agregarlos a un container, en fin .. un 3 ejercisio:

Código ActionScript :

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

var ldr:Loader;

btn1.addEventListener(MouseEvent.CLICK, loadSWFA);
btn2.addEventListener(MouseEvent.CLICK, loadSWFB);

function loadSWFA(evtObj:Event):void
{
   ldr = new Loader();
   ldr.load(new URLRequest("swfA.swf"));
   if(con.numChildren > 0)
   {
      con.removeChildAt(0);
      trace("removido");
      con.addChild(ldr);
   }else
   {
      con.addChild(ldr);
   }
   con.addChild(ldr);
}

function loadSWFB(evtObj:Event):void
{
   ldr = new Loader();
   ldr.load(new URLRequest("swfB.swf"));
   if(con.numChildren > 0)
   {
      con.removeChildAt(0);
      trace("removido");
      con.addChild(ldr);
   }else
   {
      con.addChild(ldr);
   }
}


espero te funcione , suerte.


Jonathan

Por maneuver

243 de clabLevel



Genero:Masculino  

Mexico City

firefox
Citar            
MensajeEscrito el 28 Ene 2010 10:07 pm
Mil Gracias! jn_Flash el Sprite funciona barbaro y lo que es mejor lo entendí nuevamente gracias Un Saludo! ^^

Por Bennu

23 de clabLevel



Genero:Femenino  

México

firefox
Citar            
MensajeEscrito el 29 Ene 2010 08:35 am
Incluso más sencillo es simplemente usar un único loader

Código ActionScript :

var ldr:Loader=new Loader();  //<---es un loader
addChild(ldr)  //<---lo añadimos
 
btn1.addEventListener(MouseEvent.CLICK, loadSWF); 
btn2.addEventListener(MouseEvent.CLICK, loadSWF); 
 
function loadSWF(evtObj:Event):void 
{
    switch(evt.Obj){
          case bt21:
              ldr.load(new URLRequest("swfA.swf"));
          break
          case btn2:
              ldr.load(new URLRequest("swfB.swf"));
          break
    }
}

Por Eliseo2

710 de clabLevel



 

firefox
Citar            
MensajeEscrito el 01 Feb 2010 01:05 am
hola jn_Flash una consulta en tu código el nombre de ldr es una intancia de un mc verdad ?

Por iViktor

21 de clabLevel



 

chrome
Citar            
MensajeEscrito el 01 Feb 2010 07:52 am
iViktor, "ldr" NO es la instancia de un MC, es un "Loader" que se crea y se añade al stage en tiempo de ejecución. Es como cuando escribimos, p.e.

Código ActionScript :

var sprite=new Sprite()
sprite.graphics.beginFill(0xFFCC00);
sprite.graphics.drawCircle(40, 40, 40);
addChild(sprite)

Aparece un círculo en el "stage" creado en tiempo de ejecución

Por Eliseo2

710 de clabLevel



 

firefox
Citar            
MensajeEscrito el 06 Jun 2010 04:09 pm
Hola jn_Flash, una pregunta:
¿Qué significa esta línea en el código?

trace("removido");

Gracias. :)

Por GUSUM

10 de clabLevel



 

firefox
Citar            
MensajeEscrito el 06 Jun 2010 05:04 pm
Hola jn_Flash,
He provado tu código y funciona perfecto, gracias!
Por lo que estado viendo, el comando trace es para depurar, no?,

Saludos!

Por GUSUM

10 de clabLevel



 

firefox
Citar            
MensajeEscrito el 07 Jun 2010 01:23 am
GUSUM , la sentencia trace() sirve para imprimir algun texto en la pantalla de salida de flash, en este caso solo puse ese trace () para comprobar que se remueven los swfs.

Jonathan

Por maneuver

243 de clabLevel



Genero:Masculino  

Mexico City

chrome
Citar            
MensajeEscrito el 07 Jun 2010 01:21 pm
Gracias por la aclaración jn_Flash,

Un saludo!

Por GUSUM

10 de clabLevel



 

firefox
Citar            
MensajeEscrito el 01 Nov 2011 08:09 pm
Hola, estoy utilizando el código que plantea maneuver y me funciona perfectamente.

Tengo un swf index en el cual tengo varios botones. Con un botón1 cargo un swf1 y con un botón2 cargo un swf2, pero eliminando swf1.

El problema es que al cargar los swf estos se añaden por encima de los botones. solapándolos parcialmente.

Mi pregunta es la siguiente: ¿Se podría controlar la profundidad en la que se cargan los diferentes swf?

Un saludo!!

Por ximo78

1 de clabLevel



 

chrome
Citar            
MensajeEscrito el 02 Nov 2011 04:34 am
tal vez se puede resulver con que juegues con la propiedad "x" & "y" del contenedor donde agregas tus swf, mueve en el eje y unos cuantos pixeles..si es por cuestion de diseño que tengas que usar profundidades sin que te lies en que nivel se encuentran los elementos en pantallas es que seguido de que hagas addChild del swf cargado haces addChild de tus botones.

Código ActionScript :

con.addChild(ldr); //agregas el SWF al contenedor
addChild(nav_bar); //nav_bar seria el movieClip donde esten tus botones


al estar ya instanciado tus botones se irian al frente de todos los Display objects que tengas en pantalla.

Jonathan

Por maneuver

243 de clabLevel



Genero:Masculino  

Mexico City

firefox
Citar            
MensajeEscrito el 03 Nov 2011 12:01 am
Perfecto Jonathan

Muchas gracias!!!!

Por ximo78

1 de clabLevel



 

msie8

 

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