Comunidad de diseño web y desarrollo en internet online

Clase Delay para retardar acciones en Actionscript 3

Es muy usual que debamos parar o ejecutar funciones con cierto delay, y si bien AS3 tiene una clase para eso (Timer), no es la cosa más eficiente, porque si quiero por ejemplo controlar un delay simple debo:

1. Crear el Timer
2. Asignar el Listener
3. Crear la función

Lo cual genera mucho código en algo que puede ser usado varias veces dentro de una pelicula. Para eso cree este clase Delay, que es sencilla pero ahorra algunos dolores de cabeza:

Código :

/* 
Versión Estable 1.0 
Clase Delay se encarga de crear un Evento Timer controlado para ejecutar cualquier función pasada como parametro.  
*/ 
 
/** 
 * Clase Delay 
 * @author Hernán 
 */ 
 
 package clases { 
    
   import flash.events.*; 
   import flash.utils.Timer; 
 
   public class delay { 
       
      private var launcher:Function;       
      private var time:Number; 
      private var times:Number;       
      private var pause:Boolean; 
      private var delayed:Timer; 
 
      function delay(Func:Function,Time:Number,Times:Number) { 
         launcher = Func; 
         time = Time; 
         times = Times; 
         pause = false; 
         init(); 
      } 
       
      private function init():void { 
         delayed = new Timer(time,times); 
         delayed.addEventListener(TimerEvent.TIMER, launch); 
         delayed.start();    
      } 
       
      private function launch(e:Event):void { 
         if(!pause){ 
            launcher(); 
         } 
      } 
       
      public function stopTime():void { 
         pause = true; 
      } 
       
      public function restartTime():void { 
         pause = false; 
      } 
       
      public function cancel():void { 
         delayed.removeEventListener(TimerEvent.TIMER, launch); 
      }             
   } 
}


Modo de Uso:

Código :

var delayer:delay = new delay(funcion,tiempo,cantidad_de_veces);


Además tenemos algunos métodos más que son:

stopTime() que nos permite pausar un rato el Timer
restarteTime() que nos permite volver a empezar (Quitar el stop)
cancel() que nos permite eliminar el Timer

Espero les sirva!

Saludos, Hernán . -

¿Sabes SQL? ¿No-SQL? Aprende MySQL, PostgreSQL, MongoDB, Redis y más con el Curso Profesional de Bases de Datos que empieza el martes, en vivo.

Publica tu comentario

o puedes...

¿Estás registrado en Cristalab y quieres
publicar tu URL y avatar?

¿No estás registrado aún pero quieres hacerlo antes de publicar tu comentario?

Registrate