getURL en AS3

Les presento cómo implementar la función global getURL en AS3, un clón de esta función para no marearse con clases del nuevo lenguaje:

function getURL(uri:String){

navigateToURL(new URLRequest(uri))

}

Una corrección breve, es que es necesario importar la clase navigateToURL en el encabezado de la clase para que funcione correctamente. Incito a expandir esta función, porque también se podría pasar el “target” del enlace como parametro String. Comenten!

Uso de QueueLoader para carga progresiva de archivos II – Eventos

Continuando con el uso de la librería QueueLoader, ahora veremos cómo se usan los detectores de eventos en ésta.

Recargando la clase anterior:
package {
//importamos las clases necesarias
import flash.display.MovieClip;
import flash.events.Event;
import com.hydrotik.queueloader.QueueLoaderEvent;
import com.hydrotik.queueloader.QueueLoader;
public class Main extends MovieClip {
public function Main() {
trace("hola desde constructor");
//creamos una instancia del QueueLoader
var _loader: QueueLoader = new QueueLoader();
for (var s:int=1; s<5; s++) {
//Recorremos las imagenes que estan en la carpeta "images"
var url:String="images/"+s+".png";
//creamos un contenedor para agregar la imagen cargada
var container:MovieClip = new MovieClip();
container.y = 170*(s-1);
//hacemos addItem y le pasamos, el url a cargar, el mc donde se cargará
_loader.addItem(url, container, {title:"Image1"});
//y finalmente ejecutamos la cola de carga:
_loader.execute();
//Agregamos el contenedor al DisplayList:
addChild(container);
//Agregamos los detectores de eventos
_loader.addEventListener(QueueLoaderEvent.QUEUE_START, onQueueStart);
_loader.addEventListener(QueueLoaderEvent.ITEM_START, onItemStart);
_loader.addEventListener(QueueLoaderEvent.ITEM_PROGRESS, onItemProgress);
_loader.addEventListener(QueueLoaderEvent.ITEM_COMPLETE, onItemComplete);
_loader.addEventListener(QueueLoaderEvent.QUEUE_PROGRESS, onQueueProgress);
_loader.addEventListener(QueueLoaderEvent.QUEUE_COMPLETE, onQueueComplete);
_loader.addEventListener(QueueLoaderEvent.ITEM_HTTP_STATUS, onHTTPError);

}
function onQueueStart(ev:QueueLoaderEvent) {
trace("la cola de descarga ha comenzado");
}
function onItemStart(ev:QueueLoaderEvent) {
trace("la descarga de un item comenzada");
}

function onItemProgress(ev:QueueLoaderEvent) {
trace("onItemProgress");
trace(Math.round((ev.percentage * 100)).toString() + "% Completado de un Item");
}
function onItemComplete(ev:QueueLoaderEvent) {
trace("Se ha descargado correctamente un Item");

}
function onQueueProgress(ev:QueueLoaderEvent) {
trace("onQueueProgress");
trace(Math.round((ev.queuepercentage * 100)).toString() + "% Completado de la cola de descargas");
}
function onQueueComplete(ev:QueueLoaderEvent) {
trace("Cola de descargas completa");
}
function onHTTPError(ev:QueueLoaderEvent) {
trace("Error en el URL o en el server");
}

}
}
}

Descargar el ejemplo: queueLoaderEventsSample

Uso de QueueLoader para carga progresiva de archivos

Una librería muy buena para la carga de archivos en ActionScript 3.0 es la llamada QueueLoader. Básicamente se encarga de cargar archivos de forma progresiva, uno tras otro, como en un stack o cola de precargas. En este post veremos un uso sencillo de éste, más adelante prometo dar ejemplos para manejar eventos y usos más avanzados.

Básicamente funciona así:

package {
	//importamos las clases necesarias
	import flash.display.MovieClip;
	import com.hydrotik.queueloader.QueueLoaderEvent;
	import com.hydrotik.queueloader.QueueLoader;
	public class Main extends MovieClip {
		public function Main() {
			trace("hola desde constructor");
			//creamos una instancia del QueueLoader
			var _loader: QueueLoader = new QueueLoader();
			for (var s:int=1; s<5; s++) {
				//Recorremos las imagenes que estan en la carpeta "images"
				var url:String="images/"+s+".png";
				//creamos un contenedor para agregar la imagen cargada
				var container:MovieClip = new MovieClip();
				container.y = 170*(s-1);
				//hacemos addItem y le pasamos, el url a cargar, el mc donde se cargará
				_loader.addItem(url, container, {title:"Image1"});
				//y finalmente ejecutamos la cola de carga:
				_loader.execute();
				//Agregamos el contenedor al DisplayList:
				addChild(container);
				//y listo!
			}

		}
	}
}

Descargar el ejemplo: SampleQueueLoader