Clase de ActionScript 3 para retardar la ejecución de funciones
Esta clase de ActionScript 3 permite retrasar un cierto tiempo la ejecución de una acción de flash. Únicamente hay que crear un controlador de tiempo (TimerEvent.TIMER en AS3 o setInterval en AS2) que ejecute la acción deseada en el tiempo que le indiquemos.
Esta sería la clase Delay.as:
- package com.zguillez.utils
- {
- import flash.display.Sprite;
- import flash.utils.Timer;
- import flash.events.TimerEvent;
- //------------------------------------------
- public class Delay
- {
- private static var _ruta:Sprite;
- private static var _tiempo:Number;
- private static var _timer:Timer;
- private static var _accion:String;
- //------------------------------------------
- public static function action(tiempo:Number,segundos:Boolean,ruta:Sprite,accion:String)
- {
- _ruta = ruta;
- _accion = accion;
- _tiempo = (segundos == true) ? tiempo * 1000 : tiempo / _ruta.stage.frameRate * 1000 ;
- _timer = new Timer(_tiempo, 1);
- _timer.addEventListener(TimerEvent.TIMER, ejecuta);
- _timer.start();
- }
- //------------------------------------------
- private static function ejecuta(event:TimerEvent)
- {
- _ruta[_accion]();
- }
- //------------------------------------------
- public static function reset()
- {
- _timer.reset();
- }
- //------------------------------------------
- }
- }
Las funciones y propiedades son estáticas para NO necesitar instanciar la clase (constructor new). Así que para usarla en nuestro .fla o dentro de otra clase pondríamos esto:
- import com.zguillez.utils.Delay
- Delay.action(3, true, this, "saluda")
- function saluda()
- {
- trace("hola");
- }
De esta manera la función “saluda” se ejecutará a los 3 segundos de haber hecho la llamada.
Como parámetros a la función “accion” le pasaremos un boolean indicándole si el valor numérico son segundos o fotogramas.
- _tiempo = (segundos == true) ? tiempo * 1000 : tiempo / _ruta.stage.frameRate * 1000 ;
También le indicaremos la ruta de la función a ejecutar con lo que puede estar dentro de cualquier MovieClip o clase.
La clase dispone de una función “reset” que permite cancelar la ejecución de la función en el caso de que aun estemos a la espera.
Compártelo:
Visto 10.970 veces
Gracias Zguillez, ya se a dónde venir cuando se me presente este problem.
Se agradece, estoy aprendiendo a actionscript y esto me ha sido muy util también podrÃas poner unas tags como delay con actionscript igual con este comentario basta seguro.
MartÃn Dos Santos
Turismo