La metaprogramación de haxe es tan potente que permite modificar el AST en tiempo de compilación directamente desde haxe (código que se ejecuta en tiempo de compilación para modificar el AST de la compilación). Esto permite que se puedan crear pseudolenguajes, o que puedas programar en haxe y generar shaders de opengl. Pero lo que me gustaría comentar ahora es el proyecto continuation. Básicamente convierte código lineal en código asíncrono añadiendo cierta metainformación a la clase y a los métodos que lo van a usar de forma que se preprocese el código y se genere código asíncrono.
Desde Haxe3 además se pueden cargar archivos .SWC fácilmente.

Descargar proyecto (388KB):

 Proyecto FlashDevelop + Haxe3 + Starling + Continuation + Android APK

La magia:

@:build(com.dongxiguo.continuation.Continuation.cpsByMeta(":cps"))
class StarlingMain extends Sprite
{
 @:cps public function moveQuad(quad:Quad)
 {
  for (n in 0 ... 2) {
   moveRight(quad).async();
   moveLeft(quad).async();
  }
 }
}

Básicamente el @:cps parsea la función y la convierte en código asíncrono. Los métodos a los que se llama que tengan un último parámetro que sea un callback y a los que se les añada un .async() pausan la ejecución hasta que se llama a dicho callback.

Para tener starling debemos incluir -swf-lib starling.swc desde “Additional Compiler Options” y -macro patchTypes(‘starlingPatch’)

El archivo de starlingPatch debe contener lo siguiente:

-starling.core.Starling.context
-starling.core.Starling.contentScaleFactor
-starling.core.Starling.juggler
-starling.core.RenderSupport.clear

Por otro lado debemos incluir el paquete continuation en “Libraries” y además lanzar un:

haxelib install continuation

Para compilar desde consola y generar una aplicación para android:

Creación de un certificado de prueba:
adt -certificate -cn SelfSigned 1024-RSA sampleCert.pfx password

Compilar SWF hecho en haxe:
haxe -cp src -main Main -swf bin\samplehaxeflash.swf -lib continuation -swf-lib starling.swc –macro patchTypes(‘starlingPatch’)

Generar android APK:
adt -package -target apk -storetype pkcs12 -keystore sampleCert.pfx HelloWorld.apk application.xml bin\samplehaxeflash.swf < password.txt