Más allá del desarrollo con Flash Libre

Far Beyond Open Source Flash Development

Hoy dí­a, el desarrollo con Open Source Flash es una realidad, pero las cosas continuan moviendose. Los projectos han evolucionado rápido en el último año con respecto al mundo de Open Source Flash. El entorno basado en Eclipse recomendado en el primero de esta serie de artí­culos, y bautizado como FAME por Jesse Warden, es ahora más capaz que antes.

Este artí­culo ha sido publicado gracias a la inestimable colaboración y traducción de Daniel Esteban.

Hoy en dí­a:

  • Flashout ha sido desaprobado en favor de las nuevas caracterí­sticas de ASDT, como el SWFViewer y AS Logger (así­ que perdimos la “F” de “FAMES”, ahora es “AMES”).
  • Cada vez usamos más la caracterí­stica ANT de Eclipse con las as2ant “tasks” o tareas para construir nuestros SWFs.
  • Para embeber nuestros gráficos y fuentes en los SWF usamos SWFMill.
  • Un millar de proyectos de código abierto han surgido, principalmente en osflash.org , que te provee de poderosas herramientas y capacidades en el desarrollo dí­a a dí­a (hecha un vistazo a ActionStep o Red5, por ejemplo …)
  • Estas son sólo algunas de las cosas importantes que ocurrieron durante el 2005, pero son demasiadas para tratar con detalle en un solo artí­culo. Por esta razón prefiero concentrarme en un punto : La herramienta ANT

ANT

Hace seis años, mientras trabajaba para Vodafone Spain, conocí­ una herramienta verdaderamente útil y productiva para construir nuestros proyectos en Java. Fue de gran ayuda para mí­ y mis compañeros de trabajo. La herramienta era Apache ANT y, desde que apareció en escena, muchos productos la integraron debido a sus útiles caracterí­sticas. Uno de ellos fue la plataforma Eclipse, la cual muchos de nosotros utilizamos hoy para crear nuestros SWF.

ANT es una herramienta que usa un dialecto en XML para ejecutar las tareas que tu, como desarrollador, le ordenes. La naturaleza de las tareas puede ser muy diversa, desde copiar archivos a algún directorio, generar archivos (SWFs, XMLs o incluso clases) “al vuelo” o transferirlas por FTP a tu servidor remoto favorito. Es solo un ejemplo del poder de ANT.

Ahora, que está¡s produciendo SWFs en una manera más standard gracias al open source, quizás te interese invertir algo de tiempo en mirar el manual de ANT y descubrir algunas gemas que mejoraran to flujo de trabajo y desarrollo. Además, usando ANT tendréis siempre todo el control sobre tu proyecto y lo mantendré¡s libre de dependencias de cualquier entorno de desarrollo ó IDEs.

Seguidamente se darán algunos trucos que pueden ser interesantes de aplicar en tu entorno de flash open source. Si nunca antes has usado ANT para el desarrollo de flash, puedes mirar el siguiente tutorial para empezar.

Recomiendo abrir el IDE de Eclipse para seguir mi explicación y crear o abrir cualquier build.xml de ANT. NOTA: Recuerda que cualquier archivo build o properties debe de estar en tu directorio raí­z.

USA ARCHIVOS DE PROPIEDADES

En vez de declarar todas las propiedades en los archivos build.xml, haz un archivo externo reusable en otros proyetos. Puedes crear un fichero “ames.properties” y referenciarlo en tu build.xml, usando :

<property file="ames.properties"/>

El fichero “ames.properties” puede contener las variables que usas en la mayorí­a de tus build.xml, como por ejemplo :

#AMES Home
ames=C:/AMES

#SWFMill
swfmill=${ames}/swfmill/swfmill.exe

#MTASC
mtasc=${ames}/mtasc/mtasc.exe

#AS2ANT (see the section USE AS2ANT TASKS below)
as2ant=${ames}/as2ant/src
...

USA VARIABLES PREDEFINIDAS DE ANT

En Eclipse, y dentro de un archivo build (y dentro del tag “project”), si pulsas el $, obtendréis información sobre las variables que puedes usar dentro de tu build.xml. La lista se construye con las variables predefinidas de ANT y las tuyas propias.

Por ejemplo, si trabajas en equipo, la varialbe ${user.home} podrí­a ser de un valor incalculable para referenciar en que parte de tu disco duro y en que carpeta local están las clases de tu Flash 8, porque esta será traducida al directorio local de cada usuario. Así­ por ejemplo, estas variables podrí­an ir en tu “ames.properties”:

Flash8Classes=${user.home}/Configuración local/Datos de programa/Macromedia/Flash 8/en/Configuration/Classes

O personalizar algunos nombres de archivo acorde al nombre de tu proyecto:

<property name="mtasc_out_file" location="deploy/${ant.project.name}.swf"/>

USA TAREAS AS2ANT

Aunque puedes usar MTASC y SWFMill con la tarea definida exec de ANT, una práctica recomendada es usar as2ant 1.0 (acutalmente beta). Este paquete te proporciona con tres nuevas tareas especialmente diseñadas para usar con tu entorno flash open source favorito. Las tareas son MTASC, SWFMILL y SWF. Para instalarlo y usarlo en tu buil.xml :

Crea el archivo “as2ant_taskdefs.xml” :

<project name="as2ant_taskdefs" basedir="."
  description="as2ant_taskdefs"/>
	
  <property file="asdt.properties" />
		
  <!-- Define the as2ant tasks -->
  <taskdef name="mtasc"   classname="org.as2lib.ant.Mtasc"
	 classpath="${as2ant}"/>
  <taskdef name="swfmill"   classname="org.as2lib.ant.Swfmill"
	 classpath="${as2ant}"/>
  <taskdef name="swf" classname="org.as2lib.ant.Swf" 
	 classpath="${as2ant}"/>

E importalo en tu build.xml :

<import file="as2ant_taskdefs.xml"/>

Por ejemplo, ahora puedes usar las nuevas tareas para crear un SWF con SWFMill :

<swfmill swfmill="${swfmill}" src="${swfmill_xml_file}" dest="${swfmill_in_file}"/>

O con MTASC :

<mtasc mtasc="${mtasc}" version="8" frame="5" classpath="${project.classes};${animationpackage_classes};${remoting_classes}" swf="${swfmill_in_file}" out="${mtasc_out_file}" main="true" src="${mainclass}"/>

Nótese que los atributos swfmill y mtasc en cada tarea deben contener las rutas a donde se instalaron respectivamente estas herramientas.

USA ANT MACRODEF PARA CREAR TUS MACROS

Conforme vayas refinando tus archivos build, necesitarás refactorizar algunas tareas comunes y pasar variables. Puedes valerte para ello de la tarea “macrodef”, en el siguiente ejemplo creo un “macrodef” llamado “createSWF” :

<macrodef name="createSWF">
    <attribute name="version" default="8"/>
    <sequential>
      <echo message="create SWF macro"/>
      <mtasc mtasc="${mtasc}" 
        version="@{version}"
        classpath="${project.classes}" 
        swf="${swfmill_in_file}" 
        out="${mtasc_out_file}" 
        main="true" 
        src="${mainclass}"/>
    </sequential>
  </macrodef>

Usa la macro “createSWF” con el siguiente código dentro de un “target”:

 <target name="SWF-with-mx">
    <echo message="Creating SWF with mx flag..."/>
    <createswf version="7"/>
  </target>

Como se puede ver, paso un atributo “version” a la macro por temas de configuración.

CREA LOS ARCHIVOS QUE NECESITES “AL VUELO”

Otro uso para ANT es la posibilidad de crear archivos al vuelo. Puedes usar esta caracterí­stica para crear un archivo de configuración o incluso una clase antes de compilar con MTASC.

Por ejemplo usa el siguiente código para crear una clase (con información sobre versionado) en la carpeta “com/carlosrovira/myProject” :

<!-- buildnumber tag generates a file with an
    autoincremental number(build.number) -->
  <buildnumber />
		
  <!-- project version -->
  <property name="build.version" value="1.0"/>
		
  <tstamp>
    <format property="build.time"
	   pattern="M/yyyy" unit="month"/>
  </tstamp>
	    	
  <echo message="${ant.project.name}
    version: ${build.version}.
    Build number: ${build.number}.
    Build Time:${build.time}" />
		
  <echo file="${project.classes}/com/carlosrovira/
    myProject/BuildInformation.as"
    append="false">
// --- This file is created by an ANT build task
// --- (see the build.xml file for more info)
class com.carlosrovira.myProject.BuildInformation {
  public static var versionNumber:String = "${build.version}";
  public static var buildTime:String = "${build.time}";
  public static var buildNumber:Number = ${build.number};
	
  public static var copyright_str:String = "Copyright(c) 2006 Carlos Rovira.";
}
  </echo>

Si estais creando archivos con ANT y usas Eclipse, recomiendo que configures ANT con “Refresh resources Upon Completion” (de esta forma actualizas la carpeta, el proyecto, etc …). También revisa la tarea especí­fica de Eclipse-ANT “<eclipse .refreshLocal/>”.

CREA ATAJOS DE TECLADO EN ECLIPSE

Esto es un truco especí­fico de Eclipse-ANT, te permitirá crear atajos de teclado para construir tu proyecto.

Ve al menú Window > Preferences. Selecciona General > Keys, veré¡s una vista con pestañas. Selecciona la categorí­a Run/Debug y el comando Run Ant Build dentro de la tabla. Añade otras combinaciones de teclas dentro de la pestaña modify, algunas como CTRL+ENTER o SHIFT+F12 pueden ser tan utiles como en el IDE de Flash.

CONCLUSIíƒÂ“N

Espero que hayas aprendido y disfrutado con estos trucos de ANT, y así­ mejores en el arte de crear tus proyectos SWF. En el futuro espero que ASDT tenga más automatismos e integración con ANT para construir tus proyectos SWF, pero por el momento se recomienda tener un buen conocimiento acerca de las posibilidades que hay en tus manos.

14 Comentarios

  1. hola carlos exelente tutorial como siempre, yo la verdad que nunca he compilado nada flash open source porque me parece un poco complicado y ademas por el momento es algo muy cambiante, ademas que supuestamente el mtasc no se actualizara a as3 , tu piensas que en un futuro habra un plugin que contenga todo? algo del estilo de flex 2, donde en el eclipse tienes la vista de diseño y puedes optar por escribir el codigo o simplemente arrastrar componentes, espero que se haya entendido mi preguntita.
    saludos

  2. Hola Seb-AS,

    Si que te comprendo, de todas formas dejame decirte que aunque estemos en una etapa de cambios, se trata sobre todo de crearte un flujo de trabajo con el que te sientas cómodo y seas productivo.

    Lo bueno de las herramientas basadas en Eclipse es que la plataforma ya hace mucho por ti, y lo que falta lo tenemos que completar con plugins como ASDT o el propio Flex Builder.

    Ahora bien, en cuanto a tu pregunta, no puedo decir cual será el futuro del herramientas ASDT tan a largo plazo. En lo que a mi respecta yo he conseguido ese flujo del que te hablo y me gustarí­a automatizar más la herramienta, pero esto dependerá de como estemos los actuales (y futuros) desarrolladores de ASDT.

    Lo que si puedo decirte es que algo tan avanzado como un editor de formularios donde puedas “dibujar” las pantallas creo que no lo veremos en bastante tiempo…y eso que incluso a los chicos deActionStep se les ha oido hablar de que algo así­ se hará en el futuro.

    Me gustarí­a decirte, que aún con todos los fallos actuales de AMES, para mi es un entorno en el que me siento muy agusto, ahora solo queda…seguir mejorandolo en la medida de lo posible.

  3. Hola Carlos, me parece bastante interesante es tema de AMES, pero lo cierto es que no consigo toda la funcionalidad de ASDT, me explico, no tengo ni code hinting ni code completion de las clases y estoy seguro de haber hecho todo al menos como explican en todos los sitios, supongo que el problema es que mi raiz de clases no es la de mx2004 sino la de flash8, y es ahí­ donde ASDT se pierde. Que puedo hacer? Mirando el forum de la página encontre algo relacionado pero no llegue a entender muy bien la solución el topic es So how do I get code hinting w/ MM classes? La verdad que me gustaria programar con ASDT ya que soy eclipsero y projava hasta la medula. Sin embargo me desanima bastante y aunque la alternativa FDT me encanto me parece una columpiada 200 $ por el plugin.

    SEPHY es muy inestable (pierdo la configuracion de colores y estilo de fuentes) y PrimalScript lo odio desde que vi ciertas cosilla en el manejo de XML (que por cierto uso CookTop y os lo recomiendo 😉 actualmente estoy probando FD, a ver que pasa…

    Si puedes echarme una mano sobre como configurar el paquete de clases para flash8 te lo agradecere muchisisisisisimo.

    gracias.

    D

  4. Hola David,

    Las dos funcionalidades que comentas (Code hinting y Code Completion), funcionan relativamente bien en la última distribucion de ASDT (no la que está en el CVS). El problema con esto se debió a que muchas veces estás funcionalidades no eran correctas o daban errores y por esto en la versión del CVS se empezó a construir una gramática para AS2 (y AS3) basada en ANTLR y que está prácticamente terminada. También hay una opción ahora en las preferencias para habilitar el nuevo motor experimental basado en esta gramática. El motor es mucho más rápido que el antiguo método, pero necesita de muchos testeos y arreglos, pero actualmente no aporta mucho con respecto al modelo anterior en cuanto a funcionalidad. Lo cierto es que apartir del nuevo código y trabajando sobre el conseguiremos un motor solido al estilo del que implementan herramientas como JDT.

    En estos momentos todos los que estamos en el equipo de ASDT estamos muy ocupados y el proyecto está “de vacaciones” esperando que los diferentes miembros podamos volver a la carga conforme resolvamos nuestros propios asuntos personales y profesionales.

  5. Umm … lo que pasa David, es que las clases del Flash8 están en tres carpetas FP7, FP8 y mx… (esto es debido a un cambio “sustancial” en la nueva estructura que seguirá flash, ahora todo mucho más estandard y correcto)

    Al tener esas dos carpetas intermedias FP7 y FP8 ASDT “se pierde” y ya no encuentra las clases como deberí­a. Mi consejo es que uses las de 2004 y si no las tienes pues indicarle a usar FP7 o FP8 directamente, según en que versión vayas a publicar. Creo que esta fue una de las respuestas que leí­ por ahí­…

  6. Yo utilizo también a mi build.xml una tarea para documentar estilo Javadoc, con as2api. Simon Wacker comentó que pensaba añadir una task a as2ant para documentar basada en as2api. Ahora no tengo ningun ejemplo a mano de un build.xml, pero cuando lo tenga lo pongo aqui.

  7. Para la documentacion vengo utilizando esto:

    Un par de veces machaque en las listas de mtasc para poder utilizar archivos tipo JAR, pero no me hacian ni caso. Ahora que los mas participantes estais creando presion, a ver si lo conseguimos. Yo lo hago habitualmente parecido a esto:

    a ver si lo escribo mas completo en mi pagina.

    saludos

  8. Hola Miguel,

    Creo que lo mejor serí­a que hicieses un post ya que parece ser que wordpress no admite insertar xml 🙁

    Luego puedes poner un comentario con un link en este post

    Gracias, y un saludo!

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *