Trucos FLASH: Detener un fotograma durante un intervalo de tiempo

26 jun. 2008
Trabajar con Flash supone todo un reto para los que venimos del mundo Web ya que, aunque aparentemente sencillo, la potencia y versatilidad que encierra ActionScript combinado con las posibilidades gráficas que ya de por si ofrece Flash, hacen de esta herramienta un verdadero misterio y quebradero de cabeza para los que somos relativamente ajenos al diseño gráfico.

Por suerte, este no es del todo mi caso, ya que siempre me he sentido atraído por la capacidad y la plasticidad visual de Flash, la que para mi sin duda es la herramienta más utilizada para crear animaciones y llamativos efectos visuales, a la espera del despegue definitivo de Silverlight.

Por ello me atrevo ahora a dar algunos de los trucos o consejos que me han ayudado a sacar el máximo partido de Flash en estos años de uso de la herramienta. Aquí va el primero de ellos...

DETENER UN FOTOGRAMA DURANTE UN INTERVALO DE TIEMPO

Muchas veces, cuando estamos trabajando con una animación, más concretamente cuando queremos pasar de una transición a otra, de un fotograma a otro, puede interesarnos establecer un cierto periodo de pausa justo al cargar el nuevo fotograma, o incluso antes de cargarlo, algo que habitualmente, si somos primerizos e inexpertos, se suele conseguir simplemente añadiendo un mayor número de fotogramas.

No obstante, mediante ActionScript podemos evitarnos la creación de fotogramas innecesarios, manteniendo así un cierto criterio, orden y control sobre las escenas. Además también podremos controlar en todo momento el intervalo de tiempo que queremos que se detenga nuestra animación, sin tener que estar contando fotogramas ni tener que hacer cálculos con los fps.

El código en que deberemos incluir como acción en el fotograma que queremos que se detenga por un intervalo de tiempo es el siguiente:


Ejemplo 1:

    stop();

    function seguir():Void { 
        play(); 
        clearInterval(retardo); 
    } 

    retardo = setInterval(this, "seguir", 3000);


Donde el valor marcado en negrita es el intervalo de tiempo en milisegundos.

Para los que os interese un poco más saber que se está haciendo con estas líneas de código, deciros que simplemente estamos ejecutando una parada de la animación mediante la llamada a la función stop(). A esto le sigue una llamada a la función setInterval() que es la que se encarga de introducir el retardo tras el cual se realizará una llamada a la función que hemos definido previamente como seguir(). Esta función que hemos creado nosotros y hemos denominado arbitrariamente seguir() es la que se encarga de reanudar la animación mediante la ejecución primero de la función play() y justo después de clearInterval(), que es la que anula y cierra la llamada inicial a setInterval().


Más información sobre las funciones predefinidas aquí utilizadas (en inglés):

stop () : Definición en el Sitio de Adobe Flash
play () : Definición en el Sitio de Adobe Flash
setInterval () : Definición en el Sitio de Adobe Flash
clearInterval () : Definición en el Sitio de Adobe Flash
comments powered by Disqus
subir