Ver Mensaje Individual
  #1 (permalink)  
Antiguo 24/09/2009, 21:12
marianocc
 
Fecha de Ingreso: mayo-2008
Mensajes: 9
Antigüedad: 16 años
Puntos: 1
AS3 Loader y swf externo que no funciona

Hola, hace rato que entro al foro y suelen ser muchas las dudas que me saco viendo los temas de los foros, pero hoy me toca escribir ya que no he podido encontrar nada que solucione mi problema.

Resulta que estoy cargando un swf externo y no me funciona.

Este swf esta compuesto por una serie de pantallas separadas por keyframes que con unos botones de siguiente o anterior se van navegando.

Toda la acción de los botones está hecha con AS3... clase de documento, addEventListener, etc... cada vez que hago clic en uno de los botones hago un gotoAndStop al fotograma clave siguiente o anterior según sea...

Este es el codigo muy resumido:

Código:
package {

	import ...;
	
	public class Externo extends MovieClip {
		
		public function Externo() {

			...
			siguiente_btn.addEventListener(MouseEvent.CLICK, irSiguiente);
			...

		}
		...

		private function irSiguiente() {

			indice++;
			gotoAndStop(indice);
			...

		}
		...

	}
}
Nada complicado...

Probando este swf solo funciona sin problemas, el tema es cuando lo cargo de forma externa dentro de otro swf...

Para hacer esto uso la clase Loader, URLRequest, etc.

Código:
package {

	import ...;
	
	public class Cargador extends MovieClip {
		
		public function Cargador() {
			
			var urlreq:URLRequest = new URLRequest("externo.swf");
			var ldr:Loader = new Loader();
			ldr.load(urlreq);
			addChild(ldr);
			ldr.contentLoaderInfo.addEventListener(Event.COMPLETE, completo);
		}
		private function completo(e:Event):void {
		
			var externo_mc:MovieClip = e.target.content as MovieClip;
			...
			...
		}
	}
}
...y al cargarse el swf tengo dos comportamientos.

Primero al terminar de cargar el swf externo se ven que van pasando las pantallas en un loop indefinido... pareciera que el AS de este no existiera y los botones siguiente o anterior no funcionan.

Esto logre solucionarlo agregando un e.target.content.stop() cuando se carga la pelicula, es decir, en el manejador del evento COMPLETE.

o sea:

Código:
		private function completo(e:Event):void {
		
			var externo_mc:MovieClip = e.target.content as MovieClip;
			externo_mc.stop();
			...
		}
Pero a partir de ese momento aparece el segundo comportamiento que es que el swf externo queda completamente detenido y no funcionan ni siquiera los botones.

Honestamente no se que estoy haciendo mal y no puedo encontrar una solución a esto.
Si a alguien se le ocurre que puede estar pasando o como encarar de otra manera este tema, será agradecido!!
Gracias
Mariano