Comenzando con Haxe/Flash

El desarrollo de aplicaciones Flash es muy fácil con Haxe. Vamos a ver un sencillo HolaMundo en Haxe:

HelloWorld


Este es un ejemplo muy sencillo que muestra las características y herramientas que vienen con Haxe:

Test.hx


Crear un archivo Test.hx y definir dentro la siguiente clase:
class Test { 
     static function main () { 
         trace ( "Hello World!"); 
     }
} 

A continuación creamos un archivo compile.hxml en el mismo directorio con el siguiente contenido.

compile.hxml


-main Test
-swf-version 9
-swf test.swf

Este archivo que creamos es el que recibe Haxe para compilar nuestro proyecto, en él se definen las principales opciones de compilación:
-swf-version Versión de Flash Player para el cual exportaremos.
-swf archivo SWF de salida
-main Aqui ponemos la clase que contiene la función main del proyecto, en nuestro caso: Test

Para compilar, si estás en Windows basta con hacer doble clic sobre el archivo compile.hxml o ejecutas el comando haxe compile.hxml . Si estás en Linux, desde una consola ejecutas haxe compile.hxml.
Hecho esto Haxe compilará nuestro proyecto y en caso de existir algún error lo visualizará.

Los errores más comunes para muchas personas que comienzan son:
- "std library not found" o "biblioteca estándar no encontrada", esto significa que haxe no ha podido localizar la colección de clases estándares que posee, es por ello que durante el proceso de instalación se indica crear la variable de entorno HAXE_LIBRARY_PATH apuntando al directorio std que está dentro del directorio donde se instaló haxe. Ejemplo: /home/user/bin/haxe/std:. (Note los tres puntos finales.).

Si todo sale bien, tendremos un archivo llamado test.swf. Ahora, creamos una página HTML y la guardamos como test.html:

test.html


<html> 
<head> <title> Haxe Flash </ title> </ head> 
<body bgcolor="#dddddd"> 
<objeto classid = "clsid: D27CDB6E-AE6D-11cf-96B8-444553540000" 
         width = "400" 
     height = "300" 
     id = "haxe" 
     align = "middle"> 
<param name="movie" value="test.swf"/> 
<param name="allowScriptAccess" value="sameDomain" /> 
<param name="quality" value="high" /> 
<param name="scale" value="noscale" /> 
<param name="salign" value="lt" /> 
<param name="bgcolor" value="#ffffff"/> 
<embed src = "test.swf" 
        bgcolor = "# ffffff" 
        width = "400" 
        height = "300" 
        name = "haxe" 
        quality = "high" 
        align = "middle" 
        allowScriptAccess = "siempre" 
        type = "application / x-shockwave-flash" 
        pluginspage = "http://www.macromedia.com/go/getflashplayer" 
/> 
</ object> 
</ body> 
</ html>

Si abrimos la página que acabamos de crear (test.html) en un navegador, debería mostrar el texto Hello World, el cual es un trace que colocamos.

Dibujo de un cuadrado


Hasta ahora hemos estado utilizando solamente Haxe puro, y no la API de Flash específica. La función trace se utiliza para mostrar trazas en la pantalla. Ahora veremos cómo dibujar un cuadrado en la pantalla. Para ello modifique el archivo Test.hx con el siguiente contenido:
class Test { 
     static function main () { 
         var mc: flash.display.MovieClip = flash.Lib.current; 
         mc.graphics.beginFill (0xFF0000); 
         mc.graphics.moveTo (50,50); 
         mc.graphics.lineTo (100,50); 
         mc.graphics.lineTo (100,100); 
         mc.graphics.lineTo (50.100); 
         mc.graphics.endFill (); 
     } 
}

Lo que este código hace es crear un MovieClip y utilizar código ActionScript para dibujar el cuadrado.

Ejecute nuevamente el archivo compile.hxml para compilar el ejemplo y abra la página test.html, esta vez se visualizará un cuadro rojo.

Uso de la Biblioteca


En Flash, los recursos (gráficos, sonidos, fuentes ...) se almacenan dentro de la Biblioteca. Estos recursos pueden tener un identificador llamado nombre de vinculación. Cuando se crea un archivo SWF de una biblioteca utilizando el IDE Flash o una herramienta de terceros, como el SWFMILL o el SamHaxe que son opensource, los recursos se pueden utilizar desde Haxe referenciando sus IDs .
Por ejemplo, supongamos que usted tiene un archivo SWF llamado resource.swf que contiene un MovieClip con el ID de vinculación "Button", para utilizarlo modificamos nuestro código así:
class Test { 
     static function main () { 
          var but = flash.Lib.current.attachMovie ( "Button", "but001", 0); 
          but._x = 10; 
          but._y = 20; 
     } 
} 

De esa forma se adjunta un elemento dela biblioteca al movieclip "but" con el nombre "but001" en la profundidad 0 en el escenario, y a continuación se coloca (10, 20) en la pantalla. Es importante aclarar que no pueden existir dos objetos con el mismo ID o profundidad.
Para que Haxe reconozca nuestro archivo de recursos (resource.swf) es necesario que lo especificamos en las opciones de compilación, editamos el archivo compile.hxml y agregamos la siguiente línea:

-swf-lib resource.swf

Ahora podemos ejecutar el archivo compile.hxml para compilar el proyecto. El test.swf creado incluirá el contenido completo de resource.swf, así como el código compilado Haxe. Debemos tener en cuenta que de esta forma el archivo test.swf tendrá las mismas dimensiones del archivo resource.swf.

Cambiar las propiedades del SWF


Es posible cambiar las dimensiones del SWF resultante editando el archivo compile.hxml y añadiendo la línea -swf-header width:height:fps:color_de_fondo :
-swf test.swf
-swf-version 9
-main Test
-swf-header 200:300:40:FF0000

Con la opción -swf-version indicamos para que versión de Flash Player vamos a exportar:

  • version 6 : generará bytecode para Flash Player 6.0 (mucho más lento porque no usa registros).
  • version 7 : generará bytecode para Flash Player 7 y deshabilita la API de Flash 8.
  • version 8 :generará bytecode para FP8 (igual que FP7) pero habilita la nueva API de Flash 8.
  • version 9 : generará para Flash Player 9 y solo usará ActionScript 3.

Cambiar políticas de seguridad
Cuando se crea un archivo SWF, se especifica si dicho archivo podrá acceder a la red o a archivos locales solamente, por defecto viene habilitado este último, si deseamos que nuestra aplicación acceda a recursos en la red y no a los locales añadimos a nuestro compile.hxml:

-D network-sandbox

Aprendiendo más allá

Ahora que has aprendido los elementos básicos de Haxe/Flash, todo lo que necesita es aprender la API de Flash para comenzar a desarrollar sus aplciaciones. Vea los LiveDocs de Adobe para Flash 6-8 (vea la sección "Referencia del lenguaje ActionScript") o la LiveDocs de Adobe para Flash 9 / 10, a fin de obtener más ayuda sobre ella.

Hay algunas diferencias menores entre la API de Haxe/Flash y la API de ActionScript 2, que se enumeran aquí:

  • las clases normales como Date, Array, String puede tener algunos cambios en Haxe ya que son comunes a todas las plataformas. Ver la documentación de la API Haxe para más detalles.
  • las clases XML XMLNode se fusionan en una sola clase Xml, y se han ampliado.
  • todas las clases bases de Flash como MovieClip, TextField, etc ... están en el paquete flash. Es necesario utilizar flash.MovieClip en lugar de MovieClip, o agregar al inicio de la clase un import flash.MovieClip.
  • en lugar de utilizar directamente _root, se utiliza flash.Lib._root, flash.Lib._global para _global y flash.Lib.current para acceder a la raíz local del SWF (diferente de _root, si se ha cargado el archivo SWF externamente).

Aparte de estas pequeñas diferencias, es posible utilizar fácilmente toda la API existente de Flash si la dominamos.

version #14215, modified 2012-06-11 16:55:13 by 163gal