30 de julio de 2007

Dónde colocar los scripts en Actionscript 3

Sigo trabajando con Actionscript 3 (AS3 para los amigos) investigando cómo trabajar con el cómodamente.

Lo que más desconcertante al principio es dónde se deben colocar los scripts. La respuesta viene derivada de algo que comentamos por aquí hace poco, la gestión de eventos. Al cambiar la gestión de eventos por un modelo unificado y simplificado ya no se pueden colocar controles de evento donde a uno le da la gana, que es lo que se venía haciendo desde Flash 3 (lo digo con seguridad porque fue cuando empece a trabajar con esto).

Anteriormente uno podía poner un script en un botón y se ejecutaba cuando alguien hacía clic sobre ese botón. El evento estaba situado en el botón, al igual que el código. Así sucedía con un montón de elementos dando como resultado que en un proyecto un poco largo era una tortura localizar el código, actualizarlo o corregirlo.

El problema es que se ha pasado de un extremo al opuesto. Ahora se recomienda escribir los scripts únicamente en archivos externos y siguiendo siempre la estructura de la programación orientada a objetos. Esto es un duro golpe para aquellas personas que utilizaban Flash más desde su faceta de programa de diseño y animación que desde la parte de lenguaje de programación. Cada vez parece más complejo resolver pequeñas cuestiones a cambio de proporcionar la potencia necesaria al lenguaje para acometer grandes proyectos.

En este punto surgen varias soluciones.

  • Aprender en profundidad a programar en AS3 y trabajar con el programa correctamente. Esta es sin duda la mejor solución y la que nos dará más alegrias con el tiempo.
  • Atrincherarse y mantenerse con Actionscript 2 y 1. Con Flash CS3 uno puede seguir programando con esos lenguajes, con sus comportamientos y sus cosas. Esta es la peor solución, ya que nunca se sabe hasta qué versión se mantendrá esta compatibilidad, al tiempo que AS3 ofrece numerosas ventajas y mejoras.
  • La tercera vía consiste en hacer nuestros proyectos usando AS3, pero pensando que si realmente no necesitamos un conocimiento profundo de la programación orientada a objetos podemos optar por no crear una clase cada vez que queramos hacer una nueva película.
Esta última es la mejor salida. Aún es posible insertar script dentro de los fotogramas en la línea de tiempo y mantenerse dentro de las normas que marcan Actionscript 3.0. Es la solución para cuando necesitamos crear un botón que abra una página web, o un enlace que nos lleve al inicio de una animación, etc. Pequeñas soluciones para pequeños problemas.

Aquí va un ejemplo, es un clip de vídeo insertado como un Clip de película que se reproduce al pulsar el botón. He utilizado la famosa ardilla que anda estos días por Internet, me resulta hipnótica.




El script que hace que esto funcione dentro de Actionscript 3 es tan sencillo como esto:
function reproducirpelicula (Event: MouseEvent): void {
ardilla.play();
btPlay.visible = false;
}

ardilla.stop();
btPlay.addEventListener(MouseEvent.CLICK,reproducirpelicula);
Paramos el funcionamiento de la arcdilla y cuando se produce la pulsación del botón ejecutamos la función que reproduce el clip y oculta el botón.

No necesitamos más, así que con eso es suficiente. No necesitamos crear una clase, definir un constructor, guardarlo todo en un archivo externo, etc. Todo el código está situado en un fotograma dentro de una capa. Si quieres ver el archivo fla lo tienes en este archivo:

ardillaintrigante.zip

Si encuentras algún error o mejora deja un comentario, me sería de gran ayuda.