Con el tutorial de "Precargas externas de archivos con Actionscript 3", me funciona excelente, pero quisiera que me funcione también para poder cargar más de un archivo .swf externo al mismo tiempo, ya que en la parte final del codigo que dice:
cargar ("nombre_archivo.swf")
si pongo;
cargar ("nombre_archivo.swf", "nombre_archivo2.swf")
me da un error en la función cargar, ya que me dice que "se espera 1 y se encontró 2", o la cantidad de archivos que le ponga.
Este es el codigo que estoy utilizando en el 1er frame de mi escena, tal cual esta en el tutorial:
//agregámos las clases que ocupamos
import flash.display.*;
import flash.events.*;
import flash.net.URLRequest;
import flash.utils.getDefinitionByName;
import flash.text.TextField;
import flash.net.URLVariables;
//declaramos las variables que ocuparemos durante la carga externa
//texto con el porcentaje cargado
var por_txt:TextField = new TextField();
//una barra que es el movieClip exportado y asignado a 'instancia'
var ClassReference:Class = getDefinitionByName("barra") as Class;
var instancia:Object = new ClassReference();
//variable del porcentaje
var por:uint = 0;
//pantalla será donde colocaremos nuestro archivo externo
var pantalla:Sprite = new Sprite();
pantalla.graphics.beginFill(0xcccccc);
pantalla.graphics.drawRect(0,0,stage.stageWidth,stage.stageHeight);
pantalla.graphics.endFill();
addChild(pantalla);
//si corren hasta aqui, deberá aparecer un cuadro gris del tamaño del stage
//declaramos una varieble de tipo Loader la cúal
//cargará nuestro archivo
var ldr:Loader = new Loader();
//esta función carga cualquier archivo swf, jpg, gif(si es con animación solo carga
//el primer frame
function cargar(url:String):void
{
//esta función configurá todos los listeners que ocuparemos
//la propiedad contentLoaderInfo proveé información acerca del archivo que se ésta cargando
configurarListeners(ldr.contentLoaderInfo );
//agregamos la mascara
ldr.mask = pantalla;
//cuando se le de un click, se descargará
ldr.addEventListener(MouseEvent.CLICK, remover);
//creamos un objeto de tipo URLRequest con nuestra URL
var urlReq:URLRequest = new URLRequest (url);
ldr.load(urlReq);
addChild(ldr);
}
//esta función configura los diferentes eventos en los que se llevará la carga
//disparador es un objeto que nos dirá que está ocurriendo
function configurarListeners(disparador:IEventDispatcher):void
{
disparador.addEventListener(Event.COMPLETE, completo);
disparador.addEventListener(Event.OPEN, comienzo);
disparador.addEventListener(ProgressEvent.PROGRESS, progreso);
disparador.addEventListener(IOErrorEvent.IO_ERROR, error);
disparador.addEventListener(Event.UNLOAD, descargado);
}
//éstas son las funciones que se llevarán a cabo dependiendo de lo que este
//ocurriendo
//cuando comienza la carga agregamos la barra al escenario y la caja de texto
function comienzo(e:Event):void
{
trace("Comenzo la carga" + e);
addChild(DisplayObject(instancia));
DisplayObject(instancia).x=(pantalla.width/2-pantalla.width/8);
DisplayObject(instancia).y=pantalla.height/2;
//caja de texto
por_txt.x=(pantalla.width/2-pantalla.width/8);
por_txt.y=pantalla.height/2-50;
addChild(por_txt);
por_txt.text = "0%";
}
//este evento se dispara durante el progreso de la carga
//y cálcula el porcentaje cargado y tambien mueve la barra de acuerdo a lo cargado
function progreso(e:ProgressEvent):void
{
trace("Cargados(bytes): " + e.bytesLoaded + " de Total(bytes) " + e.bytesTotal);
por = Math.round((e.bytesLoaded*100)/e.bytesTotal);
por_txt.text=String(por)+" %";
DisplayObject(instancia).gotoAndStop(por);
}
//cuando se completa la carga, removemos la barra y la caja de texto
function completo(e:Event):void
{
trace("Se completo la carga" + e);
removeChild(DisplayObject(instancia));
removeChild(por_txt);
}
//esta función se dispara si ocurrio un error ya sea que no se encuentra el archivo
//o por seguridad
function error(e:IOErrorEvent):void
{
trace("Ocurrio un error: " + e);
}
//esta función ocurre cuando el archivo se descarga con el unload
function descargado(e:Event):void
{
trace("Archivo descargado: " + e);
}
//esta funcion descarga el archivo
function remover(e:Event):void
{
ldr.unload();
}
//aquí llamamos la funcion
cargar ("nombre_archivo.swf")
//
pero quisiera saber qué tendría que modificar para poder cargar más de un archivo como mencioné antes, usar la misma barra de precarga y éste mismo codigo AS3.
Muchas gracias.
