¿Cómo enlazar dos SWF sin el escenario transparente?

Estoy empezando con Flash (CS5 concretamente).
Tengo un archivo SWF (Exp web sonido.fla) con dos escenas: Escena 1 (donde hay unas interpolaciones de movimiento y forma) y Escena 2 (donde las interpolaciones se detienen con una acción "stop") y queda un menú con botones.
Al pulsar uno de los botones de la Escena 2, se carga otro archivo SWF (Biografía.fla) y se repruduce sin problemas (gracias al código que he encontrado después de investigar por la red) que es éste:
function cargarPel(event:MouseEvent):void {
       var urlSwf:URLRequest = new URLRequest("biografía.swf");
       var cargarSwf:Loader = new Loader();
       cargarSwf.load(urlSwf);
       this.addChild(cargarSwf);
}
button_1.addEventListener(MouseEvent.CLICK, cargarPel);

Al cargarse el segundo SWF (Biografía.fla), se abre encima del primero. El problema es que el primero sigue viéndose por debajo y escuchándose su sonido.
Yo quiero que cuando se abra el segundo SWF su escenario no sea transparente y no se vea lo que "hay debajo", ni se escuche su sonido. Vamos, que sólo este activo el archivo que acaba de cargar.
Espero haberme explicado con claridad. Aguardo tu respuesta.

4 Respuestas

Respuesta
1
No estoy muy seguro de flash cs5 (no lo he usado nunca) pero en el flash 8 que usa lenguaje as2 lo que tu necesitas es descargar la peli que esta sonando y viéndose entonces el comando UnloadMovieNum ("nivel escenario del movieclip a cerrar") sirve para eso,
la cosa quedaría así
on (release) { cargarSwf. UnloadMovie ();} //este código tendrías que ponerlo en el botón al principio arriba del código que carga este es solo para que descargue
Bueno así es como lo haría en flash 8.
Muchas gracias, pero hablando con otras personas me han dicho que AS2 y AS3 son bastante diferentes. Así que no sé si servirá. De todos modos lo probaré por si acaso.
Gracias de nuevo.
Respuesta
1
Lo único que tienes que hacer es quitar ese código que tienes en el botón y poner otro.
Te explico:
Ese código que mencionas lo que hace es cargar la película "biografía.swf" en un contenedor dentro de la película principal. Lo que necesitas es cargar la película pero suplantado esta por la anterior, osea, que en vez de quedar dentro de un contenedor en el nivel 1 lo que necesitas es que se cargue en el nivel 1. Cuando haces esto de cargar una película en un nivel es que lo que tenias antes en ese nivel se borre.
Bueno pues pon esto en las acciones del botón:
On (press)
    { "biografía.swf" (1);}
Respuesta
1
Eh.. aun estoy comenzando en action script.. pero te doy una idea.. entendí que al dar click se carga el swf pero lo hace encima osea que se ven los botones y el ultimo fotograma de la animación entonces te sugiero que agregues al boton_1 (parece que es este el que tiene la función).. un sprite con un fondo así el swf se mostrara encima de el sprite y no dejara que se vean lo del fondo.. ten en cuenta que el sprite debe tener el tamaño de el fondo que deseas esconder...
Este es un método sencillo..
Gracias por tu ayuda. Lo probaré. Aunque un colega me ha comentado que tengo que cambiar el código que estoy usando ahora por otro que me ha pasado. Ya que el actual lo que hace es cargar el SWF nº 2 dentro del nº 1 en un "contenedor" y, con le que él me comenta, lo que hago es sustituir un archivo por otro, que, en definitiva es lo que quiero.
Respuesta
1
Lo que pasa es que estás cargando un swf externo encima de otro. Lo que tienes que hacer es remover el primero al darle click a tu segundo botón.
Por lo que veo en tu código, el "loadMovie()" de ActionScript2 cambió por un URLRequest(""); que en AS2, se usaba el getURL(); . En As2 hay una función llamada UnloadMovie(); esa función quita los movieclips que hay.
Lo que veo en tu script es una variable que carga con la función "load" el (urlSwf) que fue una variable creada previamente. Lo que tendrías que hacer (o yo lo haría, la verdad no se si funcione, no uso AS3) es descargar el código anterior en cada botón, es decir, colocar un "cargarSwf.unload()" Lo que hace este código es quitar el URL que le estás pasando.
Esto debe funcionar.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas