Precargar archivos en AS3

ActionScript 3 trae nuevos métodos, propiedades y eventos para implementar nuestras aplicaciones, en esta ocasión crearemos un precargador de archivos en AS3, para ello ahora estan disponibles nuevas clases: URLRequest y Loader.

Cargando Flash

La clase URLRequest nos permitirá asignar el archivo que deseamos cargar y la clase Loader nos permitirá hacer el seguimiento en el proceso de la carga.

  1. var mcRequ:URLRequest = new URLRequest("image.jpg");
  2. var mcLoad:Loader = new Loader();

Luego de ello iniciamos la carga del archivo utilizando el método load de la clase Loader.

  1. mcLoad.load(mcRequ);

Luego el siguiente paso es agregar los detectores de eventos, en esta caso detectaremos el inicio de la carga, el progreso de la carga y el fin de la carga.

  1. mcLoad.contentLoaderInfo.addEventListener(Event.OPEN, onOpen);
  2. mcLoad.contentLoaderInfo.addEventListener(ProgressEvent.PROGRESS, onProgress);
  3. mcLoad.contentLoaderInfo.addEventListener(Event.COMPLETE, onComplete);

Nótese que hemos agregado las funciones onOpen, onProgress y onComplete que se ejecutarán al inicio, progreso y fin de la carga. Entonces lo que hace falta es implementar estas funciones.

  1. function onOpen(event:Event):void {
  2.     txtload.text = "CARGANDO 0%";
  3. }
  4. function onProgress(event:ProgressEvent):void {
  5.     var bLoad = event.bytesLoaded;
  6.     var bTot = event.bytesTotal;
  7.     txtload.text = "CARGANDO "+Math.round(100*bLoad/bTot)+"%";
  8. }
  9. function onComplete(event:Event):void {
  10.     txtload.text = "";
  11.     mcclip.addChild(mcLoad);
  12.     mcclip.width = 400;
  13.     mcclip.height = 134;
  14. }

En este paso hay que notar como se obtienes los valores de los bytes cargados (bytesLoaded) y los bytes totales (bytesTotal) para hacer el calculo del porcentaje de carga. Además de ello txtload es un campo de texto y mcclip un MovieClip que están en el Stage en donde se cargará la imagen. Finalmente una vez cargado la imagen la agregamos al MovieClip mcclip y luego lo escalamos para que encaje en nuestra película.

Uniendo todos los elementos, tenemos nuestro precargador de archivos en ActionScript 3, el cual fácilmente se puede convertir en una clase para poder utilizarla para precargar cualquier archivo.

  1. var mcRequ:URLRequest = new URLRequest("image.jpg");
  2. var mcLoad:Loader = new Loader();
  3.  
  4. mcLoad.load(mcRequ);
  5. mcLoad.contentLoaderInfo.addEventListener(Event.OPEN, onOpen);
  6. mcLoad.contentLoaderInfo.addEventListener(ProgressEvent.PROGRESS, onProgress);
  7. mcLoad.contentLoaderInfo.addEventListener(Event.COMPLETE, onComplete);
  8. function onOpen(event:Event):void {
  9.     txtload.text = "CARGANDO 0%";
  10. }
  11. function onProgress(event:ProgressEvent):void {
  12.     var bLoad = event.bytesLoaded;
  13.     var bTot = event.bytesTotal;
  14.     txtload.text = "CARGANDO "+Math.round(100*bLoad/bTot)+"%";
  15. }
  16. function onComplete(event:Event):void {
  17.     txtload.text = "";
  18.     mcclip.addChild(mcLoad);
  19.     mcclip.width = 400;
  20.     mcclip.height = 134;
  21. }

Como pueden ver, no es muy complicado solo hay que entender la logica de funcionamiento de AS3 y el correcto uso de los detectores de eventos. Para finalizar les dejo los archivos fuentes para que puedan descargar y hacer sus pruebas.

Comentarios Total 5 comentarios


Wilson J. Bolivar A.
Publicado: 04/08/2008 11:37 am

hola, buenos dias, me gustaria saber si puedo utilizar este mismo ejemplo de precarga pero con AS2. espero me puedan colavorar ya que es urgente

ale
Publicado: 08/09/2008 9:40 am

Muchas gracias funciona perfectamente

Ricardo Infante
Publicado: 10/04/2009 2:09 pm

Hola!

Oye mil gracias por tus tutoriales, deveras que te vas a ir directo al cielo, son de vital ayuda para uno que comienza.
Solo tengo una duda, como se puede hacer una descarga de un archivo mas rapida, entendiendo claro que la conexion da para más, es que subi varios videos y se descargan muy lentamente, y lo hice de forma que primero se descargara uno y luego los demas sin embargo su tiempo desdescarga no se incremento. Si me puedes ayudar te lo agradecere muchisimo, saludos y aqui cuentas ya con un amigo.
Ricardo

fran
Publicado: 26/10/2009 11:42 am

podes explicar como hacer con esto una clase reutilizable?.
gracias

nina
Publicado: 07/02/2010 12:50 am

hola oye me ha ayudado mucho, sin embargo estoy atorada por que voy empezando con este tipo de codigo, si recupero el la pelicula con

import flash.net.URLRequest;
import flash.ui.ContextMenu;

no tengo idea de como asignarlo:
var mcRequ:URLRequest

Help me please.

Nina

 

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>)