Compilador para ActionScript 2.0 MTASC

Buen tema con el que empezar :)
Ha salido un compilador Open Source para ActionScript 2.0, se llama MTASC, que es el acrónimo de Motion Twin Action Script Compiler.
El desarrollador es Nicolas Canesse y se ha ocupado de sacar 4 betas en dos semanas. El proyecto es muy activo...

MTASC presume ser un compilador más avanzado que el de Flash, compila 100 clases en menos de 5 segundos, y es más estricto en varios aspectos en los que el de Flash simplemente pasa por alto.
Nicolas Canesse ha creado el compilador teniendo muy en cuenta el standard ECMA muy presente.

La cosa empezó con un compilador muy restrictivo, que no aceptaba muchas peculiaridades del compilador de Flash, con lo que la gente pedía más flexibilidad para poder compilar sus proyectos existantes.
El tema ha ido evolucionando y parece que se ha llegado a un punto muy interesante en el que uno se puede plantear seriamente el dejar de depender del IDE de Flash para desarrollar sus aplicaciones con ActionScript.
Otra cosa que a la gente le ha encendido una luz (digo gente incluyéndome a mi) es el hecho que MTASC es independiente de plataforma. Lo puedes compilar para la plataforma que desees, solo necesitas poder compilar el lenguaje y compilador de OCalm.
Yo personalmente he instalado MTASC en un Fedora (Linux) y he podido compilar un proyecto sin problemas.

El compilador funciona desde la línea de comandos y te obliga a trabajar de manera totalmente orientada a objetos. Es decir, los proyectos tienen que ser un conjunto de clases.
Tienes dos posibilidades, una es trabajar 100% OOP y exclusivamente con MTASC, y la otra es parcialmente con el IDE de Flash y compliando las clases con MTASC.

En el caso de usar exclusivamente MTASC, desarrollar una aplicación desde Linux por ejemplo, no lograba ver cómo hacerlo sin depender del IDE de Flash, aunque solo fuera para instanciar la primera clase,
pero se puede trabajar con un sistema de clases en la que una de ellas se autoejecute al empezar la aplicación.
Para verlo más gráficamente aquí dejo un ejemplo de como hacerlo con una clase muy simple:

Main.as

Actionscript:
  1. class Main {
  2.        static public function run ():Boolean
  3.       {
  4.         trace ("Hola mundo!");
  5.                 return true;
  6.        }
  7.        // llamda a la función Main que arranca la aplicación
  8.        static public var startApp = (
  9.                 _root.onEnterFrame = function()
  10.                 {
  11.                     Main.run();
  12.                     _root.onEnterFrame = null
  13.                 });
  14. }

( Obviamente lo de trace es un decir... desde mtasc eso no funciona :) )

Esta clase se autoejecuta sin que se instancie gracias a que la variable es startApp y la función run son estáticas.
El comando que se utilizaría sería:
mtasc src/Main.as -swf app.swf -header 800:600:25
Esto teniendo una carpeta llamada src en el directorio donde esta el binario de MTASC con la clase Main.as

Iré posteando mis experiencias con MTASC a medida que vaya viendo cosas interesantes.

Referencias de interés:
* Página MTASC
* Lista de correo MTASC

Comments

2 Responses to “Compilador para ActionScript 2.0 MTASC”

  1. Daniel on November 18th, 2004 14:51

    Hey, ké tal va eso Joan?

    Muy hábil lo de la variable estática. Esto es lo ke necesitábamos!
    Sin embargo, no veo por qué tienes que usar el onEnterFrame. Lo he probado asignando directamente la función... y funciona :)

    CODE:
    1. // Clase Testing.as
    2. class Testing
    3. {
    4.     static var start:Boolean = drawRect();
    5.  
    6.     static function drawRect():Boolean
    7.     {
    8.         var mc:MovieClip = _root.createEmptyMovieClip("square", 1);
    9.         mc.beginFill( 0xffcc00, 100 );
    10.         mc.lineTo ( 100, 0 );
    11.         mc.lineTo ( 100, 100 );
    12.         mc.lineTo ( 0, 100 );
    13.         mc.lineTo ( 0, 0 );
    14.         mc.endFill();
    15.  
    16.         return true;
    17.     }
    18. }

    Me parece ke al IDE de macromedia le van a salir algunos competidores...

    Por cierto, parece que hay algún problemilla con los comentarios de tu blog. Los carácteres latinos como acentos, etc, parece ke no se procesan correctamente, y tampoco se muestran los saltos de línea, de carro, etc... Qué tal si integras BBCode o similar?

    Un saludo.

  2. admin on November 18th, 2004 20:12

    Hola Dani ;)
    La razón por la que estoy utilizando ese onEnterFrame es debido a que si tienes una jerarquía de clases algo extensa, lo que va a pasar es que cunado se ejecute la variable estática startApp justo cuando sea leída por el compilador, si las demás clases no han sido cargadas todavía y llamas a un método o propiedad de éstas, no las va a encontrar.
    Es por eso que para asegurar que todo está ya cargado esperemos a que se ejecute el 1er frame.

    Respecto a lo que comentas de los caracteres voy a ver si lo puedo arreglar... Posteando no me pasa, es solo con los comentarios.

    Lo del BBCode, ahora que lo dices, me lo apunto (seguro que hay algún plugin de Movable Type por ahí­ que lo hace). Gracias por la sugerencia.

    Saludos!