Comunidad de diseño web y desarrollo en internet online

Eliminar un swf del stage

Citar            
MensajeEscrito el 25 Mar 2008 03:56 am
Estoy cargando un swf externo de la siguiente forma:

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

container.x = 100;
container.y = 100;

var ldr:Loader = new Loader();
ldr.load ( new URLRequest ("externo.swf") );

Mi intención ahora es colocar un botón en este swf externo que permita removerlo de la Lista de Visualización, en otras palabras eliminarlo del stage.
Cual es el código que deberia tener este botón?

Desde ya muchas gracias. Claudio

Por Ishkandar

Claber

303 de clabLevel



Genero:Masculino  

firefox
Citar            
MensajeEscrito el 25 Mar 2008 05:06 am
Pues si lo que deseas es eliminar el contenedor osea "container" utiliza el metodo removeChild(); por lo tanto cuando preciones el boton pide que se ejecute este metodo de la clase (creo) DisplayObjects

Bye

Por Gz.Francisco

378 de clabLevel



Genero:Masculino  

Programador economista y buzo

firefox
Citar            
MensajeEscrito el 25 Mar 2008 10:09 am
Podría hacer eso si el elemento que quiero eliminar perteneciese al documento "principal". O sea, digamos que en la misma película tengo un quadrado, un círculo y un rectángulo. haciendo :
container.removeChild( circulo ) realmente lo elimino.

Pero en mi caso es un swf externo.

Si coloco de la misma forma que en el ejemplo anterior él da un error porque no reconoce container. Debemos recordar que quien debe eliminar esta película es un botón que se encuentra dentro de ella.

Por Ishkandar

Claber

303 de clabLevel



Genero:Masculino  

firefox
Citar            
MensajeEscrito el 25 Mar 2008 10:19 am
Tienes que eliminar el Loader con removeChild, pero creo que si lo intentas desde dentro te da un error (algo como que el que llama no puede ser hijo), llama una función en parent que lo remueva.

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 25 Mar 2008 11:16 am
Jorge: funciona parente em AS3? En la última línea el código que no funcionó

|||||||||Código de la película de abajo|||||||

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

var ldr:Loader = new Loader();
ldr.load( new URLRequest ( "encima.swf" ) );
container.addChild( ldr );

||||| Código de la película de encima |||||||

btnRemover.addEventListener( MouseEvent.CLICK, btnRemover_CLICK )

function btnRemover_CLICK ( evento:MouseEvent ):void
{
parent.container.removeChild(ldr);
}

Por Ishkandar

Claber

303 de clabLevel



Genero:Masculino  

firefox
Citar            
MensajeEscrito el 25 Mar 2008 12:43 pm
si lo intentas desde dentro te da un error (algo como que el que llama no puede ser hijo)


Yo uso una función generalista para "autoremoverse"

function removeMe(a:DisplayObject){
this.removeChild(a)
}

Luego desde el butón llamas a esta función como parent.parent.removeMe(this), aunque puede que me ewquivoque con las rutas, juega un poco con ellas

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 25 Mar 2008 01:03 pm
Y a esa función la llamo desde dónde? desde la btnRemover_CLICK?

Por Ishkandar

Claber

303 de clabLevel



Genero:Masculino  

firefox
Citar            
MensajeEscrito el 25 Mar 2008 01:07 pm
Correcto

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 25 Mar 2008 01:32 pm
Quedó asi:

btnRemover.addEventListener( MouseEvent.CLICK, btnRemover_CLICK )

function btnRemover_CLICK ( evento:MouseEvent ):void
{
removeMe();
}

function removeMe(a:DisplayObject)
{
this.removeChild(a);
}

Pero me sale este error:

1136: Incorrect number of arguments. Expected 1.

Por Ishkandar

Claber

303 de clabLevel



Genero:Masculino  

firefox
Citar            
MensajeEscrito el 25 Mar 2008 01:52 pm
Uff ... uff .. falta mucha base por ahí. Pasemos a modo corta y pega.
La función removeMe tiene que estar a la misma altura (el mismo timeline) que donde agregas el Loader
Luego en la llamada, hay que pasar un argumento, como puedes ver en la signatura de la función

function btnRemover_CLICK ( evento:MouseEvent ):void
{
removeMe(parent);
}

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 25 Mar 2008 05:40 pm
Coloqué este en el nivel del Loader

function removeMe(a:DisplayObject):void
{
this.removeChild(a);
trace ( "aqui" );
}

y este en el del clique:

function btnRemover_CLICK ( evento:MouseEvent ):void
{
removeMe(parent);
}

Pero no funciona

Por Ishkandar

Claber

303 de clabLevel



Genero:Masculino  

firefox
Citar            
MensajeEscrito el 25 Mar 2008 07:16 pm
Bien, ahora la llamada al scope correcto

function btnRemover_CLICK ( evento:MouseEvent ):void
{
parent.parent.removeMe(parent);
}

Creo que esa es la ruta

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 26 Mar 2008 12:46 am
Haaaa es que no te habia entendido. Entonces lo que quieres es eliminar un boton (que se encuentra en el swf cargado) desde el swf contenedor.

Pues como le haz hecho es eliminar el boton desde si mismo.

pero puedes eliminarlo desde el contenedor.

desde el contenedor:
//Una vez cargado el swf en el contenedor_mc entonces este pasara a ser el root del swf cargado
root.contenedor_mc.boton_btn.removeChild();
O
root.contenedor_mc.removeChild(boton_btn);

Pero afuerzas le tienes que dar a la ruta. Puedes poner un trace de target al boton dentro de swf cargado y correrlo desde la pelicula que carga al swf externo para ver la ruta que tienes que seguir para llegar a el desde la pelicula principal

Chaaaale ponle nombres a los archivos no?

Por Gz.Francisco

378 de clabLevel



Genero:Masculino  

Programador economista y buzo

firefox
Citar            
MensajeEscrito el 26 Mar 2008 02:34 am
Jorge: tampoco es ese camino

fraggz: el problema es el siguiente, yo cargo en el root un swf externo. Este swf externo tiene un botón de cerrar. O sea al clicar en el botón de cerrar el swf cargado tiene que descargarse, desaparecer.

Para que entiendas mejor. Yo tengo una miniatura (thumb) cuando el usuário clique en ella se va a cargar el swf externo sobre ella en un tamaño grande, en esa nueva película debe haber un botón que permita descargarla para que se pueda continuar navegando.

Por Ishkandar

Claber

303 de clabLevel



Genero:Masculino  

firefox
Citar            
MensajeEscrito el 26 Mar 2008 10:17 am
Pues es un tema de que corrijas la ruta. Para saber donde estás parado, como siempre: trace(this) Luego es solo cuestión de sumar o quitar parent

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox

 

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