Flash

Leo con curiosidad que Microsoft se ha planteado en algún momento el no darle más bola a Silverlight, pensando quizás a largo plazo, más allá del lanzamiento de la nueva versión que verá la luz en los próximos meses. La decisión podría fundamentarse en el cada vez más presente empuje y la gran cantidad de posibilidades que brinda HTML5, como alternativa estándar y válida para la gestión de formatos multimedia en la web y a la producción de contenido interactivo. Algo que en el momento del lanzamiento de Silverlight no estaba todavía definido, lo cual justifica la estrategia de Microsoft en su momento. Mientras tanto en Adobe son muy reticentes a que nadie les toque Flash, aplicación con la que en su momento Macromedia revoluciono la producción de contenidos en la web, viendo la luz por primera vez en 1996. Sus motivos tendrán para esta defensa a ultranza de su producto, pero la realidad es que ya va siendo hora de que piensen bien cuales van a ser sus próximos pasos. Tienen a mucha gente en su contra y creo que conforme los desarrolladores web vayamos conociendo más al detalle HTML5 y CSS3 vamos a dejar Flash a un lado definitivamente. Al menos así deberíamos hacerlo. Estoy convencido de ello, y lo digo basándome en mi propia experiencia. Soy el primero que ha creado pantallas de introducción animadas, banners rotativos o mapas de localización íntegramente en Flash. Pero se que si lo hice, soy culpable diga lo que diga, fue porque no había otras alternativas ni tan llamativas ni tan fáciles de implementar. ¡Pero estoy hablando de hace 5 años!. Ahora las excusas que siempre hemos dado para usar Flash, con HTML5 ya no tienen sentido alguno. Sobre todo en la faceta donde Flash más se ha instaurado y hecho fuerte en los últimos tiempos, en la reproducción de audio y vídeo a través de la web. Pero también existen algunas animaciones e interactividades que pueden ser perfectamente suplidas en la actualidad con AJAX. Vamos, que las opciones para evitar caer en Flash, o en su defecto Silverlight, se han ampliado mucho. Reconozco que ha sido muy divertido siempre el trabajar con Flash, suerte que nunca llegué a profundizar con Silverlight, pero ya va siendo hora de dejarlo todo atrás.

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