Jul 27, 2008

EnterFrame vs Timer (I)

Hace ya varios años, en una época en la que la web estaba poblada de páginas estáticas y todo el movimiento se reducía a los gif, un programa llamado FutureSplash consiguió sorprender a todos por su increíble capacidad para la animación.

Emulando el sistema de cinematografía, basado en proyectar fotogramas de forma rápida y sucesiva para lograr la sensación de movimiento, FutureSplash incorporaba una linea de tiempo en la que se podía dibujar frame a frame para reproducir luego la película.

Un año más tarde, ese revolucionario programa fue adquirido por Macromedia y nació Flash 1.0, para acabar evolucionando actualmente en Flash CS3, de la mano de Adobe. Y por sorprendente que parezca, nueve versiones después, la filosofía para generar animación se ha mantenido intacta.

Al margen de la animación tradicional en linea de tiempo, la otra forma de generar animación es mediante código, y en ActionScript sí que ha ido evolucionando el tema:

  • En Flash 5 se introdujo el archiconocido enterFrame.
  • En Flash MX nos obsequiaron con setInterval (lo recuerdo como una gran novedad).
  • Y ya en AS3, se ha apostado por la clase Timer como sucesora de setInterval.

Así pues, en Flash 5, para animar mediante código se utilizaba enterFrame, pero con la introducción de setInterval la comunidad empezó a dividirse entre partidarios y detractores de uno y otro sistema. Es fácil encontrar discusiones en blogs, foros y listas sobre este tema, y personalmente he perdido la cuenta de cuantas veces he debatido sobre ello.

En este artículo vamos a estudiar la clase Timer (setInterval está desaconsejada, pero la lógica se puede aplicar igualmente) y el evento enterFrame, con la esperanza de poder definir cuándo es mejor usar una u otra.

Continuar leyendo »

Jul 6, 2008

Habilitar botón derecho en AS3

Es sabido que en Flash Player no se puede utilizar el botón derecho del mouse de forma “propietaria”. Con dicho botón se activa el menú contextual, y aunque se puede modificar, como mínimo encontramos las opciones Configuración y Acerca de Adobe Flash Player 9…

Pues navegando por Google Code me he encontrado un proyecto llamado Custom-context-menu que nos permite utilizar a nuestro antojo el botón derecho. Para ello combina javascript y flash de una manera muy ingeniosa. Básicamente el hack consiste en:

  • Con javascript, capturar el click derecho en HTML antes que llegue al swf
  • Una vez capturado el evento, informar al swf mediante ExternalInterface
  • Crear una función en ActionScript que responda a la llamada de ExternalInterface

Se puede ver un ejemplo aquí.

Aunque puede ser un recurso muy útil, hay que tener en cuenta los siguientes inconvenientes:

  • Funciona en la mayoría de navegadores/so, pero no en todos
  • Antes de tener el evento en AS, recorre un ciclo de llamadas entre el swf y el html, con lo que el rendimiento es mucho peor que una llamada nativa
  • En el menú contextual se encuentran las opciones de configuración del Flash Player, y estaríamos quitándoselas al usuario

Aún así, en casos específicos en los que sería muy importante tener este botón habilitado, es una gran solución y no está de más conocerla.