Llevo bastante tiempo descolgado del Macromedia Flash ya que me dedico principalmente a la parte servidor de los juegos que se producen en Zinkia, pero ahora me ha dado por renovar un poco las librerias de conexión y comunicación, que hice en 2002 en Flash 5, para adaptarlas a los nuevos tiempos, sobre todo para aprovechar que el ActionScript2 ya se parece a un lenguaje de verdad, concretamente se parece mucho a Java, y me he encontrado con que esto está evolucionando de un modo vertiginoso y que me he quedado bastante atrás, como siempre.
La primera versión de nuestras librerias se hicieron en ActionScript 1.0. Esta versión del lenguaje no soportaba directamente la programación orientada a objetos mas que de manera parcial. Algunas cosas eran objetos y tenian propiedades, como los MovieClips, pero no habia una manera ortodoxa de crear clases, habia que hacerlo mediante prototipaje y con artimañas y gracias a un extenso y muy bien ilustrado tutorial sobre ello, el de Debreuill, fui capaz de montar una serie de clases que han sido la base de las comunicaciones de todos los juegos para Flash que hemos hecho desde entonces.
Así era antes:
// MojoGame PROTOTYPE
// Nombre de la clase y constructor
// Inicializacion de los miembros
MojoGame = function( i, n, p , nplayers )
{ ... }
MojoGame.prototype.getPlayers = function()
{ return this.players; }
MojoGame.prototype.toString = function()
{ return "[MojoGame "+ this.name +"]"; }
¿Por qué era tan complicado programar orientado a objetos en Action Script 1.0? Pues por que le faltaban todas las caracteristicas que un lenguaje debe tener para ser orientado a objetos. No existian los tipos de datos explicitos, es decir, las variables podian contener un numero y al momento siguiente un texto, dependiendo de lo que les asignase el programador, lo que daba lugar a multitud de errores indetectables por despistes e impedia hacer las variables privadas, con lo que perdemos la capacidad de ocultación o encapsulamiento de la infomacion inherente a los lenguajes OO.
La herencia entre clases, aunque no era imposible, si que era complicada de implementar, al igual que lo era el polimorfismo, ya que eran necesarios trucos para sobrecargar metodos de clases padres.
Todo esto cambió con la llegada de AS 2.0 en el que las variables se han vuelto “fuertemente tipeadas” (no me gusta nada esta expresión), pueden ser publicas o privadas, las clases pueden declararse abstractas, existe la herencia con “extends” e incluso los interfaces y los namespaces, vamos, casi como Java salvo por la sintaxis que difiere mínimamente.
Así es ahora:
// MojoGame Class
class MojoGame extends Game
{
// Miembros de la clase
private var players:Array;
private var name:String;
...
public MojoGame (i:Number, n:Number, p:Player , nplayers:Number )
{ ... }
public getPlayers():Array
{ return this.players; }
public toString():String
{ return "[MojoGame "+ this.name +"]"; }
Mi siguiente paso ha sido buscar un plugin para el Eclipse que me permita tener proyectos en ActionScript. Cualquier programador que se precie coincidirá conmigo en que el entorno de desarrollo de Flash esta pensado para todo menos para los programadores (es lógico, por otra parte) por eso me llevo el desarrollo a un lugar (Eclipse) mas amigable. Mientras buscaba encontré 2 que tenían buena pinta, el ASDT y el FDT. El inconveniente de este último es que es de pago, aunque tienes una versión de prueba de 30 dias. Es una lástima porque es manifiestamente mejor y aprovecha mas las ventajas del Eclipse, integrandose perfectamente. En cualquier caso, he estado probando el ASDT y como siempre, me ha costado mas de la cuenta que funcionase correctamente, no tanto por dificultad de instalación, que no tiene ninguna, sino por falta de información, ya que no lleva documentación alguna.
Ambos plugins necesitan tener acceso a las Core Libraries de Flash para saber los tipos de datos, o mas correctamente, las Clases nativas y así poder hacer code highlighting y corrección del código sobre la marcha. Para tener esas librerías es necesario tener instalado FlashMX 2004, Flash8 o en su defecto, el MTASC.
No tenia ni idea de que existiese un compilador de ActionScript Open Source. Eso es precisamente el MTASC, que ha sido producido por MotionTwin Technologies. No me entretengo en comentar sus ventajas, solo dire que gracias a el podemos compilar todo el ActionScript que hagamos en el Eclipse sin necesidad siquiera de tener instalado Flash, ya que MTASC trae su propio paquete de core libraries.
Se hace bastante raro el programar en Flash sin gráficos :), por eso aunque se puede tener Action Script compilado sin necesidad de tener Flash instalado, es mejor tener el Flash para poder hacer cosas interesantes y vistosas.
El principal problema que presentan estos dos plugins para Eclipse es que llevan mas de año y medio sin actualizarse y sus creadores parece ser que han abandonado el desarrollo. Por su parte, el MTASC también parece tener sus dias contados ya que sus desarrolladores estan centrados en la creación de un nuevo lenguaje, el HaXe ,que permite producir Javascript y Flash para la producción de aplicaciones web (que mania con crear lenguajes nuevos).
Me empeñé en buscar plugins mas recientes sin resultado, hasta que encontré una razón poderosa para ello. Gracias a la web de Carlos Rovira (si, ya se que se parece demasiado a cierto político XD), empecé a leer cosas sobre Flex2 y a darme cuenta de por donde van los tiros.
No me extraña que los creadores de esos plugins abandonasen, porque ha entrado en escena la todopoderosa Adobe, que hace no demasiado compró Macromedia, y que ha sacado su propio IDE y mega plugin gigante para Eclipse para desarrollar lo que ahora se llaman RIAs (Rich Internet Application) y que no es otra cosa que aplicaciones basadas en el reproductor de Flash9 (si, yo también me sorprendí de lo poco que ha durado el reproductor de Flash8, que segun parece tenía mas problemas que caracteristicas nuevas), con todo el efectismo que eso conlleva (de ahí lo de “Rich”). Han tirado para alante, han sacado el ActionScript3 y a todo el conjunto lo han llamado Flex 2.
Este IDE y plugin para producir en Flex2 se llama Flex Builder 2 y voy a probarlo una temporada para poder emitir algun juicio. Es posible que ya no tenga que pelearme con los “viejos” plugins de ActionScript2 o puede que sea demasiado grande para lo que yo quiero hacer. Ya veremos.
(NOTA: No confundir Flex 2 con el Flex (Fast LEXical analyzer generator), la herramienta heredera de LEX y que acompaña fielmente a BISON el generador de parseadores de lenguajes, igual que LEX acompañaba a YACC, mas sobre Lex/Yacc)
son