Comunidad de diseño web y desarrollo en internet online

Superpone swf al cargar

Citar            
MensajeEscrito el 23 Ago 2010 04:52 am
Tengo el problema que cuando quiero cargar un swf dentro de un loader que ya cree y esta ocupado por otro swf, me lo superpone, y yo quiero que lo reemplace.

Este es el código:

var nombre:String = "noticias.swf";
var nombre2:String = "general";
var posicionx:uint = 160;
var posiciony:uint = 120;

inicio();

function inicio ():void {
var loader:Loader = new Loader();
loader.load(new URLRequest(nombre));
loader.x = posicionx;
loader.y = posiciony;
addChild(loader).name = nombre2;
addChild(loader);


boton_2.addEventListener(MouseEvent.MOUSE_DOWN, usarboton);

//-----------------------------------------
function usarboton(event:MouseEvent):void {
nombre = "delegacion.swf";
nombre2 = "general";
posicionx = 170;
posiciony = 150;
inicio();

}

Desde ya agradezco su ayuda

PD: revise por todos lados pero no lo pude ubicar, las mayoría de las soluciones son para AS2 y esto es AS3

Por nightshadows

5 de clabLevel



 

msie8
Citar            
MensajeEscrito el 23 Ago 2010 07:32 am
Deberías declarar la variable loader fuera de la funcion y dentro eliminarla si existe:

Código ActionScript :

var loader:Loader

function inicio ():void {
      if (loader is DisplayObject) {
            removeChild(loader);
      }
      loader = new Loader();
      loader.load(new URLRequest(nombre));
      loader.x = posicionx;
      loader.y = posiciony;
      addChild(loader).name = nombre2;
      addChild(loader);
}
inicio();

boton_2.addEventListener(MouseEvent.MOUSE_DOWN, usarboton);
function usarboton(event:MouseEvent):void {
      nombre = "delegacion.swf";
      nombre2 = "general";
      posicionx = 170;
      posiciony = 150;
      inicio();
}

Así debería funcionarte bien, o sino eliminar el el contenido del loader (excepto el último nivel que es donde has cargado lo último) con una función tipo:

Código ActionScript :

function eliminar():void {
   for (var i:Number = loader.numChildren; i > 1; i--) {
      loader.removeChildAt(i - 1);
   }
}

Por juanfher

74 de clabLevel



 

firefox
Citar            
MensajeEscrito el 23 Ago 2010 01:29 pm
Hola segui tu consejo y me funciona a medias, ya que reemplaza el swf pero me borra todos los otros cargados.
ya que tambien uso la función inicio para cargar imagenes y otros swf. por eso era la idea de darle un nombre al loader con
addChild(loader).name = nombre2; y luego solo reemplazar el loader que se llame "general"

Código ActionScript :


var loader:Loader 
inicio();
imagenes();


 function inicio ():void {
       if (loader is DisplayObject) { 
            removeChild(loader);
       }
       loader = new Loader();
       loader.load(new URLRequest(nombre));
       loader.x = posicionx;
       loader.y = posiciony;
       addChild(loader).name = nombre2;
       addChild(loader);
 }

function imagenes ():void {
       nombre = "paisaje.jpg";
       nombre2 = "top";
       posicionx = 0;
       posiciony = 0;
       inicio();   
       
       nombre = "linea.png";
       nombre2 = "linea";
       posicionx = 0;
       posiciony = 200;
       inicio(); 

       nombre = "banner.swf";
       nombre2 = "banner";
       posicionx = 0;
       posiciony = 500;
       inicio(); 
    
 }

 boton_2.addEventListener(MouseEvent.MOUSE_DOWN, usarboton);
 function usarboton(event:MouseEvent):void {
       nombre = "delegacion.swf";
       nombre2 = "general";
       posicionx = 170;
       posiciony = 150;
       inicio(); 
}



lo que yo quisiera hace es
removeChild(loader).name = "general"
pero no se la sintaxis correcta
Muchas gracias por tu tiempo

Por nightshadows

5 de clabLevel



 

msie8
Citar            
MensajeEscrito el 23 Ago 2010 09:20 pm
Creo que yo aún estoy más perdido. Llevo unos días diseñando una web y, todavía no sé por qué, decidí hacerla en AS3, del cual no tengo ni la más remota idea. De AS2 ya sabía poco, pero... He buscado códigos y más o menos todo va funcionando. Pero tengo el mismo problema que nightshadows. En mi sitio, con 5 clips de película como botones, deben cargarse como swf las cinco secciones en un clip vacío. He puesto un código como este (cambiando nombres) en cada botón, pero los contenidos se superponen, y no sé como solucionarlo.

Si alguien pudiese echarme una mano lo agradecería.
Suerte nightshadows!




var conciertos;
conciertos.buttonMode=true;
conciertos.useHandCursor=true;


function abrirconciertos(e:MouseEvent):void {
var conciertosContenido = new Loader();
conciertosContenido.load(new URLRequest("conciertos_entrada.swf"));
MovieClip(root).emptymc.addChild(conciertosContenido);
}
conciertos.addEventListener(MouseEvent.CLICK,abrirconciertos);

Por CLAnonimo

Claber

600 de clabLevel

5 tutoriales
1 articulo

 

Este es un usuario anónimo genérico para las cuentas borradas o perdidas.

safari
Citar            
MensajeEscrito el 24 Ago 2010 06:02 pm
Hola! Yo ya lo he solucionado.

Partiendo de este código, y jugando un poco con los niveles lo conseguí, aunque no sabría decirte exactamente cómo. Mi nivel solo vale para ir probando hasta que funciona. :)
Puedes bajarte el flash y copiar el código al tuyo cambiando lo que necesites.

http://www.developphp.com/Flash_tutorials/show_tutorial.php?tid=115

Suerte!

Por CLAnonimo

Claber

600 de clabLevel

5 tutoriales
1 articulo

 

Este es un usuario anónimo genérico para las cuentas borradas o perdidas.

safari
Citar            
MensajeEscrito el 24 Ago 2010 10:59 pm
mellamoanton, te agradesco desde ya tu solución, pero lo he solucionado de forma más sencilla.

Para empezar, primero lo que hago es asignarle un nombre al loader que creo, y que tiene un archivo especifico para luego poder identificarlo.

con el siguiente codigo

Código ActionScript :

addChild(loader).name = "nombre que le quiero asignar al loader"


bien, ahora, yo lo que queria era borrar o descargar determinado loader, como haciamos antes con el unloadMovie y sentia que para eso debía usar el nombre que le asigne, sino era un renglon de gusto.

Y por fin encontre la sintaxis que buscaba :P y que me funciono joya.

cuando presiono en el boton y antes de cargar una nueva pelicula/imagen ingreso el siguiente codigo

Código ActionScript :

removeChild(getChildByName("nombre del loader que quiero reemplazar"));


talvez no sea lo mejor, pero es muy sencillo de utilizar y desarga el loader sin importar en que nivel se encuentre.

Saludos Cordiales para todos

Por nightshadows

5 de clabLevel



 

msie8

 

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