Blog
AsyncQueue: cola asincrona de tareas
8 years, 10 months ago Posted in: Blog Comments Off

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:

Actionscript:
  1. package com.mattimatti.task{
  2.  
  3.    
  4.     import flash.display.BitmapData;
  5.     import flash.display.Sprite;
  6.     import flash.events.ErrorEvent;
  7.     import flash.events.Event;
  8.     import flash.events.ProgressEvent;
  9.     import flash.text.TextField;
  10.  
  11.     public class ExampleAsyncOperationQueue extends Sprite
  12.     {
  13.        
  14.         public var tf:TextField;
  15.        
  16.         public function ExampleAsyncOperationQueue()
  17.         {
  18.            
  19.             tf = new TextField();
  20.                 addChild(tf);
  21.                 tf.width = 800;
  22.                 tf.height = 800;
  23.                 tf.border = true;
  24.        
  25.  
  26.             // create main queue
  27.             var oAsyncQueue:AsyncQueue = new AsyncQueue("Main","Main",true);
  28.                 oAsyncQueue.addEventListener(ProgressEvent.PROGRESS,onQueueProgress);
  29.                 oAsyncQueue.addEventListener(Event.COMPLETE,onQueueCompleted);
  30.                 oAsyncQueue.addEventListener(ErrorEvent.ERROR,onQueueError);
  31.                
  32.                 oAsyncQueue.log = tracer;
  33.                
  34.                 // add simple tasks
  35.                 oAsyncQueue.addTask(new AbstractTask("1","1"));
  36.                 oAsyncQueue.addTask(new AbstractTask("2","2"));
  37.    
  38.            
  39.             // create dependant queue
  40.             var oAsyncQueue2:AsyncQueue = new AsyncQueue("Dependent","Dependent");
  41.                 oAsyncQueue2.log = tracer;
  42.                 oAsyncQueue2.addTask(new AbstractTask("3","3"));
  43.                 oAsyncQueue2.addTask(new AbstractTask("4","4"));
  44.                
  45.                
  46.                 // create a proxy object
  47.                 var oProxiedClass:ProxiedClass = new ProxiedClass();
  48.                     oProxiedClass.log = tracer;
  49.                
  50.                
  51.                 // create a task proxy to encapsulate async process
  52.                 var oProxyClass:TaskProxy = new TaskProxy("Proxy","Proxy");
  53.                     oProxyClass.log = tracer;
  54.                     oProxyClass.createDelegate(oProxiedClass,oProxiedClass.encode,[new BitmapData(100,100)]);
  55.                
  56.                
  57.                 // add to main queue
  58.                 oAsyncQueue2.addTask(oProxyClass);
  59.                
  60.                 oAsyncQueue.addTask(oAsyncQueue2);
  61.                
  62.                 tracer("-----------------------------------");
  63.                
  64.                 // run the queue
  65.                 oAsyncQueue.run();
  66.  
  67.         }
  68.        
  69.  
  70.         // trace the progress of the main queue
  71.         private function onQueueProgress( e :P rogressEvent ):void {
  72.            tracer("MainQueue progress: " + e.bytesLoaded +" out of "+ e.bytesTotal + "> " +e.target.label );
  73.         }         
  74.    
  75.         // trace the progress of the main queue
  76.         private function onQueueCompleted( e:Event ):void {
  77.            tracer("MainQueue Completed");
  78.         }         
  79.    
  80.         // trace the progress of the main queue
  81.         private function onQueueError( e:ErrorEvent ):void {
  82.            tracer("MainQueue Error: " + e.text);
  83.         }   
  84.  
  85.  
  86.        
  87.         public function tracer(inStr:String):void{
  88.             tf.text+=inStr+"\n";
  89.         }
  90.        
  91.        
  92.        
  93.        
  94.     }
  95. }

Comments are closed.

Image compression on this page is provided by WordPress Image Compressor