AsyncQueue es una cola de tareas asincrona que sigue el patrón composite. es perfecta en el caso que tengas que ejecutar tareas muy pesadas que puedan bloquear el flash player, por ejemplo exportar varias imagenes.
Puedes descargarlo aqui: asyncqueue_as3
Adjunto un ejemplo:
[as]
package com.mattimatti.task{
import flash.display.BitmapData;
import flash.display.Sprite;
import flash.events.ErrorEvent;
import flash.events.Event;
import flash.events.ProgressEvent;
import flash.text.TextField;
public class ExampleAsyncOperationQueue extends Sprite
{
public var tf:TextField;
public function ExampleAsyncOperationQueue()
{
tf = new TextField();
addChild(tf);
tf.width = 800;
tf.height = 800;
tf.border = true;
// create main queue
var oAsyncQueue:AsyncQueue = new AsyncQueue(“Main”,”Main”,true);
oAsyncQueue.addEventListener(ProgressEvent.PROGRESS,onQueueProgress);
oAsyncQueue.addEventListener(Event.COMPLETE,onQueueCompleted);
oAsyncQueue.addEventListener(ErrorEvent.ERROR,onQueueError);
oAsyncQueue.log = tracer;
// add simple tasks
oAsyncQueue.addTask(new AbstractTask(“1″,”1″));
oAsyncQueue.addTask(new AbstractTask(“2″,”2″));
// create dependant queue
var oAsyncQueue2:AsyncQueue = new AsyncQueue(“Dependent”,”Dependent”);
oAsyncQueue2.log = tracer;
oAsyncQueue2.addTask(new AbstractTask(“3″,”3″));
oAsyncQueue2.addTask(new AbstractTask(“4″,”4″));
// create a proxy object
var oProxiedClass:ProxiedClass = new ProxiedClass();
oProxiedClass.log = tracer;
// create a task proxy to encapsulate async process
var oProxyClass:TaskProxy = new TaskProxy(“Proxy”,”Proxy”);
oProxyClass.log = tracer;
oProxyClass.createDelegate(oProxiedClass,oProxiedClass.encode,[new BitmapData(100,100)]);
// add to main queue
oAsyncQueue2.addTask(oProxyClass);
oAsyncQueue.addTask(oAsyncQueue2);
tracer(“———————————–”);
// run the queue
oAsyncQueue.run();
}
// trace the progress of the main queue
private function onQueueProgress( e:ProgressEvent ):void {
tracer(“MainQueue progress: ” + e.bytesLoaded +” out of “+ e.bytesTotal + ” > ” +e.target.label );
}
// trace the progress of the main queue
private function onQueueCompleted( e:Event ):void {
tracer(“MainQueue Completed”);
}
// trace the progress of the main queue
private function onQueueError( e:ErrorEvent ):void {
tracer(“MainQueue Error: ” + e.text);
}
public function tracer(inStr:String):void{
tf.text+=inStr+”\n”;
}
}
}
[/as]
This entry was posted on Wednesday, February 4th, 2009 at 9:39 am
You can follow any responses to this entry through the RSS 2.0 feed.

Xing
LinkedIn
Twitter
Delicious
Facebook