La verdad que no es difícil, solo es cuestión de estar presionando F1 por momentos.. en fin, viendo tu código lo he visto algo confuso así que me di un tiempo y lo he ordenado, ten en cuenta que lo hice en notepad++ y que no está probado y que tal vez tenga algún error en la sintaxis o se me escape alguna letra de más ok.
SWF Principal o Main :
Código ActionScript :
video1.addEventListener(MouseEvent.CLICK,clickHandler);
video2.addEventListener(MouseEvent.CLICK,clickHandler);
var peticion:URLRequest = new URLRequest();//object URLRequest "Peticion"
var cargador:Loader=new Loader();//object Loader "Cargador"
//Listener , cuando el SWF este completamente cargado, se llamara la funcion insertMovie
cargador.contentLoaderInfo.addEventListener(Event.COMPLETE, insertMovie, false, 0, true);
//creamos un contenedor vacio, donde se alojaran los SWF que se carguen
var contenedor:MovieClip = new MovieClip();
//lo agregamos a la display list
addChild(contenedor);
function clickHandler(e:MouseEvent)
{
//para ser mas dinamicos y optimizar usaremos una sola funcion para el manejador CLICK
//comprobamos que boton fue clickado
switch(e.currentTarget.name)
{
//si es video1
case "video1":
//cambiamos la propiedad url del objeto URLRequest
peticion.url = "videosjc.swf";
break;
//si es video2
case "video2":
//cambiamos la propiedad url del objeto URLRequest
peticion.url = "videos2.swf";
break;
default:
break;
}
//teniendo la url definida procede a cargar lo que esta tenga solicitado
cargador.load(peticion);
}
function insertMovie(e:Event):void
{
//accedes atravez de e.target al LoaderInfo, se realiza un cast para evitar problemas de compilacion
var tmpLdrInfo:LoaderInfo = e.target as LoaderInfo;
//accedes a la propiedad content del LoaderInfo, en el cual se encuentra un DisplayObject
//que es el SWF cargado , hacemos una conversion de cast a MovieClip ,ya que un SWF
//se comporta como un MovieClip
var swfCargado:MovieClip = tmpLdrInfo.content as MovieClip;
//comprobamos si el contenedor tiene algun hijo en su display list
if(contenedor.numChildren > 0 )
{
//en caso de tenerlo removeremos
//en esta parte es cuando el Evento REMOVED_FRMOM_STAGE es disparado
//por lo tanto la funcion que tengas definida en el SWF externo se llamara
contenedor.removeChildAt(0);
//descargamos el cargador
cargador.unLoad();
return;
}
//agregamos el SWF al contenedor , ya sea que hayga removido o no en el if anterior
contenedor.addChild(swfCargado);
}
Ahora lo que hace falta es que agregues el listener a los swf que cargas para que estos mismos destruyan sus objetos y detengan el audio , por ejemplo en el swf videosjc :
Código ActionScript :
this.addEventListener(Event.REMOVED_FROM_STAGE,onRemoved, false, 0, true);
function onRemoved(e:Event):void
{
//si usas el componente FLVPlayback , y tambien teniendo en cuenta que este tenga un nombre de
//instancia por ejemplo "miReproductor"
//le ponemos stop()
miReproductor.stop();
//lo igualamos a null para que se valla al carajo por completo
miReproductor = null;
//-------------------
//si usas un reproductor personalizado , deberas cerrar las conexiones , quitar listeners ..etc
}
El código esta comentado así que no creo que te pierdas y si los lees te aseguro que podrás seguir a delante con tu proyecto.
Jonathan