Precarga multiple en AS3

BulkLoader es una clase escrita en AS3 que te permitirá cargar y manejar múltiples archivos de manera sencilla. Esta clase te permitirá cargar múltiples archivos de diferente tipo en una interface unificada, accediendo a los eventos de carga en la misma instancia.

Utilizando BulkLoader
Lo primero es descargar la ultima versión de BulkLoader, extraen los archivos y en la carpeta src se encuentran las clases necesarias para el uso de esta librería.

Lo primero es importar las clases BulkLoader y BulkProgressEvent y posteriormente creamos una instancia de la clase BulkLoader, al cual le asignamos un nombre, en este caso mainLoader:
[as]
import br.com.stimuli.loading.BulkLoader;
import br.com.stimuli.loading.BulkProgressEvent;

var loader:BulkLoader = new BulkLoader(«mainLoader»);
[/as]

A continuación agregamos los items o elementos que deseamos cargar, pueden ser archivos jpg, gif, png, xml, mp3, flv, etc. Para ello utilizamos el método add donde asignamos la ruta a cargar y un nombre de id para recuperar los datos cargados posteriormente.

[as]
loader.add(«background.jpg», {id: «bg»});
loader.add(«menu.xml», {id:»menu»});
loader.add(«sound.mp3», {id: «sound»});
[/as]

El siguiente paso es agregar los detectores de eventos o listeners (COMPLETE, PROGRESS, ERROR) con los cuales podemos detectar el progreso de la carga y el termino de la misma.
[as]
// para la carga de todos los archivos
loader.addEventListener(BulkLoader.COMPLETE, onLoaded);
loader.addEventListener(BulkLoader.PROGRESS, onProgress);
loader.addEventListener(BulkLoader.ERROR, onError);
// para la carga de uno de los elementos
loader.get(«bg»).addEventListener(Event.COMPLETE,onBgLoaded);
loader.get(«bg»).addEventListener(Event.PROGRESS,onBgProgress);
loader.get(«bg»).addEventListener(Event.ERROR,onBgError);
[/as]

Luego iniciamos la carga utilizando el método start.

[as]loader.start();[/as]

Finalmente implementamos las funciones asociadas a los detectores de eventos y obtenemos los archivos cargados, para ello podemos utilizar getBitmap, getSound, getXML, getText, getNetStream, getSound, getMovieClip de acuerdo al archivo que estemos cargando.

[as]
function onLoaded(evt:Event) {
// extraemos la imagen
var mcBg:Bitmap = loader.getBitmap(«bg»);
addChild(mcBg);
// extraemos el sonido
var sonido:Sound = loader.getSound(«sound»);
sonido.play();
// extraemos el XML
var xmlMenu:XML = loader.getXML(«menu»);
trace(xmlMenu);
}
[/as]

Luego uniendo todos los elementos, obtenemos nuestro precargador de múltiples archivos.
[as]
import br.com.stimuli.loading.BulkLoader;
import br.com.stimuli.loading.BulkProgressEvent;

var loader:BulkLoader = new BulkLoader(«mainLoader»);
loader.add(«background.jpg», {id: «bg»});
loader.add(«menu.xml», {id:»menu»});
loader.add(«sound.mp3», {id: «sound»});

loader.addEventListener(BulkLoader.COMPLETE, onLoaded);
loader.addEventListener(BulkLoader.PROGRESS, onProgress);

function onLoaded(evt:Event) {
// extraemos la imagen
var mcBg:Bitmap = loader.getBitmap(«bg»);
addChild(mcBg);
// extraemos el sonido
var sonido:Sound = loader.getSound(«sound»);
sonido.play();
// extraemos el XML
var xmlMenu:XML = loader.getXML(«menu»);
trace(xmlMenu);
}
public function onAllItemsProgress(evt:BulkProgressEvent) {
trace(evt.bytesLoaded + » – » + evt.bytesTotal);
}
[/as]

Como pueden ver es muy sencillo el uso de esta clase y puede facilitar y ahorrar tiempo en la implementación de sitios con acceso a múltiples tipo de datos.

Comentarios Total 5 comentarios

ZoiX
Publicado: 03/06/2008 11:22 pm

Disculpa, sé que esto no tiene que ver mucho con el tema, entré buscando un plugin para resaltar el código de action script y me encuentro con uno el cual no actualiza su página desde febrero del 2006, por lo que creo es incompatible con wordpress 2.5. Te agradecería muchísimo si me indicas qué plugin usas. Gracias.

MeL
Publicado: 06/08/2009 3:46 pm

Hola te quería hacer una consulta… para importar varios swf con getMovieClip como haces ? Muchas gracias

Tutan
Publicado: 07/06/2010 7:24 pm

Si cargas dos swf asociados a clases que contienen nombres de instancia iguales, produce errores en la carga.
Si saben como solucionar este problema, se los agradecería.

Rooney
Publicado: 22/07/2010 4:07 pm

Tutan, visita este sitio, aqui esta tu respuesta:
Solucion

joaquin
Publicado: 28/12/2021 1:43 am

buenos días. la clase funciona perfectamente para sonidos cargados en carpeta externa a animate. Peeeeeero, estoy intentando usarla para sonidos cargados en la nube y me da este error:

[BulkLoader] Failed to get content with url: ‘berClav’as type: [class Sound]
TypeError: Error #1009: Cannot access a property or method of a null object reference.

Parece ser que no está pensada para cargar archivos de la nube. Agradezco una solución. Gracias!!

 

Comentar

En este blog los comentarios están moderados, serán mostrados cuando el administrador los apruebe. Por favor, evita comentarios ofensivos u obscenos por que no serán aprobados.
Si deseas publicar código fuente debes hacerlo entre las etiquedas <code> y </code>, además debes reemplazar los carácteres < por &lt; y > por &gt;.

(Requerido)

(Requerido, no será publicado)

(Requerido)

(Tags aceptados: <a> <em> <strong> <code> <ul> <li>)