<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>ivanmosquera.net &#187; flash</title>
	<atom:link href="http://ivanmosquera.net/index.php/tag/flash/feed/" rel="self" type="application/rss+xml" />
	<link>http://ivanmosquera.net</link>
	<description> Just another computing weblog</description>
	<lastBuildDate>Mon, 26 Jul 2010 18:54:58 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>es</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Desarrollo para Plataforma Flash en Linux: Minibuilder</title>
		<link>http://ivanmosquera.net/index.php/2009/12/26/desarrollo-para-plataforma-flash-en-linux-minibuilder/</link>
		<comments>http://ivanmosquera.net/index.php/2009/12/26/desarrollo-para-plataforma-flash-en-linux-minibuilder/#comments</comments>
		<pubDate>Sat, 26 Dec 2009 16:53:18 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[software]]></category>
		<category><![CDATA[flash]]></category>
		<category><![CDATA[flex]]></category>
		<category><![CDATA[linux]]></category>

		<guid isPermaLink="false">http://ivanmosquera.net/?p=75</guid>
		<description><![CDATA[Desde hace un tiempo Adobe ya no desarrolla Flash/Flex Builder para Linux. Una alternativa libre prometedora que he encontrado es Minibuilder. Se trata de un editor que utiliza la tecnología Adobe Air.

flash platform
Veamos a continuación los pasos necesarios para desarrollar en Linux para plataforma Flash con esta herramienta:

1. Instalamos Adobe AIR : (Fuente:  http://www.sizlopedia.com/2008/04/06/how-to-install-adobe-air-on-ubuntu/ )

user@computer:$ [...]]]></description>
			<content:encoded><![CDATA[<p>Desde hace un tiempo Adobe ya no desarrolla Flash/Flex Builder para Linux. Una alternativa libre prometedora que he encontrado es Minibuilder. Se trata de un editor que utiliza la tecnología Adobe Air.<br />
<img src="http://ivanmosquera.net/wp-content/uploads/2009/12/flash-platform-signature.jpg" alt="flash platform" /></p>
<p>flash platform</p>
<p>Veamos a continuación los pasos necesarios para desarrollar en Linux para plataforma Flash con esta herramienta:<br />
<span id="more-75"></span></p>
<p>1. <strong>Instalamos Adobe AIR</strong> : (Fuente:  <a href="http://www.sizlopedia.com/2008/04/06/how-to-install-adobe-air-on-ubuntu/">http://www.sizlopedia.com/2008/04/06/how-to-install-adobe-air-on-ubuntu/</a> )</p>

<div class="wp-terminal">user@computer:$ wget http://airdownload.adobe.com/air/lin/download/1.5/AdobeAIRInstaller.bin<br/></div>


<div class="wp-terminal">user@computer:$ chmod +x AdobeAIRInstaller.bin<br/></div>


<div class="wp-terminal">user@computer:$ ./AdobeAIRInstaller.bin<br/></div>

<p>Si aún habiendo instalado las dependencias tiene problemas para hacer funcionar Adobe AIR con 64 bits, con un error como el siguiente: <em>Error loading the runtime (libnss3.so: wrong ELF class: ELFCLASS64)</em><br />
Los pasos que le pueden faltar son:<br />
<code><br />
$ cd /usr/lib32/<br />
$sudo ln -s /emul/ia32-linux/usr/lib/libnss3.so .<br />
$sudo ln -s /emul/ia32-linux/usr/lib/libssl3.so .<br />
$sudo ln -s /emul/ia32-linux/usr/lib/libsmime3.so .<br />
$sudo ln -s /emul/ia32-linux/usr/lib/libnspr4.so .<br />
$sudo ln -s /emul/ia32-linux/usr/lib/libnssutil3.so.1d .<br />
$sudo ln -s /emul/ia32-linux/usr/lib/libplc4.so.0d .<br />
$sudo ln -s /emul/ia32-linux/usr/lib/libplds4.so .<br />
$sudo ln -s /emul/ia32-linux/usr/lib/libplds4.so.0d libplds4.so.0d<br />
</code></p>
<p>2. <strong>Instalar Java</strong></p>

<div class="wp-terminal">user@computer:$ apt-get install sun-java-jre<br/></div>

<p>3. <strong>Instalar Flex</strong> 3.5 ( URL : <a href="http://opensource.adobe.com/wiki/display/flexsdk/Download+Flex+3">http://opensource.adobe.com/wiki/display/flexsdk/Download+Flex+3</a> )</p>
<p>Descomprimir en algún sitio</p>
<p>4. <strong>Descargar minibuilder</strong>: (URL :  <a href="http://minibuilder.googlecode.com/files/AirMiniBuilder-1.0-alpha-3.air">http://minibuilder.googlecode.com/files/AirMiniBuilder-1.0-alpha-3.air</a> )</p>

<div class="wp-terminal">user@computer:$ Adobe\ AIR\ Application\ Installer /$RUTA_ABSOLUTA/AirMiniBuilder-1.0-alpha-3.air<br/></div>

<p>5. Tras la instalación de minibuilder, éste <strong>se iniciará</strong>. Veremos que nos pide <strong>ejecutar</strong> un tal <strong>MBCompiler</strong>, la ruta al script figurará en la última línea de la ventana.<br />
En mi caso : <em>/opt/AirMiniBuilder/share/MBCompiler/start</em><br />
Supongo que Minibuilder no hace ese trabajo por nosotros debido a algún tipo de limitación del sandbox de Air.</p>
<p>Teniendo ejecutado MBCompiler podemos hacer click en &#8220;Check again&#8221; y desaparecerá la advertencia.<br />
También tenemos que especificar la ruta  a flex en el cuadro &#8220;SDK Path&#8221;.</p>
<p>Y ya está. Ya podemos empezar a utilizar de Minibuilder. Empezaremos con un pequeño proyecto para el Flash Player.</p>
<p>Utilizamos la pestaña &#8220;<em>Create New Project</em>&#8220;:</p>
<div id="attachment_78" class="wp-caption aligncenter" style="width: 597px"><img class="size-full wp-image-78" title="Minibuilder" src="http://ivanmosquera.net/wp-content/uploads/2009/12/1.png" alt="Minibuilder" width="587" height="567" /><p class="wp-caption-text">Minibuilder</p></div>
<p>Elegimos:<br />
Project target : &#8220;<em>Flash Player AS3</em>&#8221;</p>
<p>Vemos que soporta dos frameworks : Flex y <a href="http://aswing.org">AsWing</a>. Nosotros por ahora sólo usaremos Flex.<br />
Activamos &#8220;<em>Add (some) Flex support</em>&#8221;</p>
<p>Como project name lo que queramos, en mi caso &#8220;hola mundo&#8221;.</p>
<p>Ese texto inicial que veremos se trata de MXML, un lenguaje de marcado que facilita el uso del framework Flex.</p>
<div id="attachment_79" class="wp-caption aligncenter" style="width: 778px"><img class="size-full wp-image-79" title="Editor Minibuilder" src="http://ivanmosquera.net/wp-content/uploads/2009/12/2.png" alt="Editor Minibuilder" width="768" height="515" /><p class="wp-caption-text">Editor Minibuilder</p></div>
<p>Hacemos click en &#8220;Compile and Quickrun&#8221;. Veremos que tarda su tiempo en compilar el SWF, años luz de la rapidez de MTASC o Haxe.<br />
No veremos nada cuando no debería ser así. Sospecho que puede ser porque mi distribución Linux utiliza SWFDEC por defecto en lugar del player de flash Adobe. El swf lo podemos encontrar en la carpeta bin-debug, con lo cual podremos ejecutarlo manualmente.</p>
<p>Veremos que aparecen unos botones (&#8220;AAA&#8221;,&#8221;BBB&#8221;&#8230;) es debido a que se está utilizando la clase &#8220;Application.as&#8221; predefinida por Minibuilder que incluye esos botones en tabs.</p>
<p>Ahora ya es cuestión de aprender Flex. Como pistas para alguien que venga de MTASC decir que las clases Flash que se solían utilizar anteriormente, en la documentación están en el API de Flash Player.</p>
<p>Así que para jugar por un lado tenemos los controles del framework Flex: <a href="http://livedocs.adobe.com/flex/3/html/help.html?content=controls_01.html">http://livedocs.adobe.com/flex/3/html/help.html?content=controls_01.html</a> y por otro lado tenemos el API de Flash Player, el cual ya nos resultará familiar al haberlo utilizado con <a href="http://mtasc.org">MTASC</a> , <a href="http://haxe.org">Haxe</a> o Flash Studio:</p>
<p><a href="http://livedocs.adobe.com/flex/3/html/help.html?content=Part3_Flash_Player_APIs_1.html">http://livedocs.adobe.com/flex/3/html/help.html?content=Part3_Flash_Player_APIs_1.html</a></p>
<p>Podemos utilizar ambas cosas sin problemas. En el siguiente ejemplo, se utiliza NetStream y Netconnection en lugar del control VideoDisplay de Flex, pero eso no quita para que los botones a utilizar puedan ser controles Flex:</p>
<p><a href="http://blog.flexexamples.com/2008/03/01/displaying-a-video-in-flex-using-the-netconnection-netstream-and-video-classes/">http://blog.flexexamples.com/2008/03/01/displaying-a-video-in-flex-using-the-netconnection-netstream-and-video-classes/</a></p>
<p>Vemos que en ese ejemplo el código Actionscript se encuentra incrustado en el MXML. No tiene porqué ser así y de hecho yo no creo que sea una buena práctica. El ejemplo de Minibuilder utiliza una clase independiente para el código (Application.as). De todos modos, ya hablaremos en otro post sobre buenas prácticas, patrones y otras librerías.</p>
<p>Entonces como conclusión. ¿Qué ofrece Minibuilder en cuanto a facilitar el desarrollo para plataforma Flash?</p>
<p>Resaltado y autocompletado AS3, así como compilación amigable de SWF incluyendo gestión de los namespaces.</p>
<div id="_mcePaste" style="overflow: hidden; position: absolute; left: -10000px; top: 2319px; width: 1px; height: 1px;">
<pre class="code">&lt;?xml version="1.0" encoding="utf-8"?&gt;
&lt;!-- http://blog.flexexamples.com/2008/03/01/displaying-a-video-in-flex-using-the-netconnection-netstream-and-video-classes/ --&gt;
&lt;mx:Application xmlns:mx="http://www.adobe.com/2006/mxml"
        layout="vertical"
        verticalAlign="middle"
        backgroundColor="white"
        creationComplete="init();"&gt;

    &lt;mx:Script&gt;
        &lt;![CDATA[
            import mx.utils.ObjectUtil;

            private var nc:NetConnection;
            private var ns:NetStream;
            private var video:Video;
            private var meta:Object;

            private function init():void {
                var nsClient:Object = {};
                nsClient.onMetaData = ns_onMetaData;
                nsClient.onCuePoint = ns_onCuePoint;

                nc = new NetConnection();
                nc.connect(null);

                ns = new NetStream(nc);
                ns.play("http://www.helpexamples.com/flash/video/cuepoints.flv");
                ns.client = nsClient;

                video = new Video();
                video.attachNetStream(ns);
                uic.addChild(video);
            }

            private function ns_onMetaData(item:Object):void {
                trace("meta");
                meta = item;
                // Resize Video object to same size as meta data.
                video.width = item.width;
                video.height = item.height;
                // Resize UIComponent to same size as Video object.
                uic.width = video.width;
                uic.height = video.height;
                panel.title = "framerate: " + item.framerate;
                panel.visible = true;
                trace(ObjectUtil.toString(item));
            }

            private function ns_onCuePoint(item:Object):void {
                trace("cue");
            }
        ]]&gt;
    &lt;/mx:Script&gt;

    &lt;mx:Panel id="panel" visible="false"&gt;
        &lt;mx:UIComponent id="uic" /&gt;
        &lt;mx:ControlBar&gt;
            &lt;mx:Button label="Play/Pause" click="ns.togglePause();" /&gt;
            &lt;mx:Button label="Rewind" click="ns.seek(0); ns.pause();" /&gt;
        &lt;/mx:ControlBar&gt;
    &lt;/mx:Panel&gt;

&lt;/mx:Application&gt;</pre>
</div>
]]></content:encoded>
			<wfw:commentRss>http://ivanmosquera.net/index.php/2009/12/26/desarrollo-para-plataforma-flash-en-linux-minibuilder/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Probando Haxe</title>
		<link>http://ivanmosquera.net/index.php/2009/11/02/probando-haxe/</link>
		<comments>http://ivanmosquera.net/index.php/2009/11/02/probando-haxe/#comments</comments>
		<pubDate>Mon, 02 Nov 2009 20:07:05 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[software]]></category>
		<category><![CDATA[cpp]]></category>
		<category><![CDATA[flash]]></category>
		<category><![CDATA[haxe]]></category>
		<category><![CDATA[linux]]></category>

		<guid isPermaLink="false">http://ivanmosquera.net/?p=20</guid>
		<description><![CDATA[Haxe es el sucesor de MTASC, pero no se limita a tener como objetivo la tecnología flash sino que también genera Javascript, PHP y otros. Además, se acompaña de una máquina virtual, Neko, que le sirve para la ejecución en servidor. Yo personalmente creo que es un proyecto que está intentando abarcar demasiado pero hay [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://haxe.org">Haxe</a> es el sucesor de <a href="http://mtasc.org">MTASC</a>, pero no se limita a tener como objetivo la tecnología flash sino que también genera Javascript, PHP y otros. Además, se acompaña de una máquina virtual, Neko, que le sirve para la ejecución en servidor. Yo personalmente creo que es un proyecto que está intentando abarcar demasiado pero hay varios puntos que me han animado a probarlo:</p>
<ul>
<li>Las nuevas funcionalidades y rendimiento mejorado de AVM2 (máquina virtual en las últimas versiones de Flash).</li>
<li>El lenguaje de Haxe es mejor que ActionScript.</li>
<li>La posibilidad de portar aplicaciones flash a plataforma nativa fácilmente. Esto se está utilizando por ejemplo para aplicaciones iPhone.</li>
</ul>
<p><img src="http://ivanmosquera.net/wp-content/uploads/haxe.gif" alt="" /><br />
A continuación los pasos necesarios para la instalación y un par de ejemplos de Haxe contra Flash y CPP usando el mismo código:</p>
<p><span id="more-20"></span></p>
<p>La instalación en Debian (testing) es sencilla:</p>

<div class="wp-terminal">user@computer:$ apt-get install haxe<br/>apt-get install neko<br/></div>

<p>Si no está disponible en tu distribución o se trata de versiones no actualizadas, una buena opción puede ser utilizar el instalador estándar de haxe para Linux y los siguientes pasos seguirán siendo los mismos.</p>
<p>Instalado Haxe y Neko, hacemos:</p>

<div class="wp-terminal">user@computer:$ mkdir -p /usr/lib/haxe/lib/<br/>haxelib setup<br/></div>

<p>Instalaremos hxcpp para hacer alguna prueba.</p>

<div class="wp-terminal">user@computer:$ haxelib install hxcpp<br/></div>

<p>Instalamos el fichero de sintaxis de Haxe para Vim:</p>

<div class="wp-terminal">user@computer:$ wget http://tech.motion-twin.com/zip/haxe.vim &amp;&amp; cp haxe.vim /usr/share/vim/vim72/syntax/<br/></div>

<p>Añadimos lo siguiente en nuestro .vimrc<br />
<code>" Haxe<br />
au BufNewFile,BufRead *.hx                setf haxe</code><br />
Ya estamos listos para probar un &#8220;hola mundo&#8221;:</p>
<p><code lang="actionscript"><br />
class Hola {<br />
static function main() {<br />
trace("Hola mundo");<br />
}<br />
</code></p>
<p>Compilamos a  swf con</p>

<div class="wp-terminal">user@computer:$ haxe -swf9 salida.swf -main Hola<br/></div>

<p>Podemos abrir el swf directamente con el navegador y deberíamos ver el trace. La función trace de Haxe se dibuja directamente, algo muy práctico la verdad.</p>
<p>Ahora vamos a compilar el mismo fichero a código nativo. Veremos que lo que hace Hxcpp es traducir nuestro fichero fuente en Haxe a código C++. Si falla es probable que sea porque nos falta algún paquete C++, podemos servirnos de apt-file para localizarlos.</p>
<p>Vemos que él mismo se encarga de invocar al compilador C++ con los parámetros adecuados así que nosotros obtenemos el resultado final simplemente con la línea de haxe.</p>
<p>El resultado estará en la carpeta &#8220;salida&#8221;. Ahí encontraremos nuestro ejecutable ELF (&#8220;Hola&#8221;) y las carpetas &#8220;include&#8221;, &#8220;obj&#8221; y &#8220;src&#8221;.</p>

<div class="wp-terminal">user@computer:$ ./Hola<br/>Hola.hx:3: Hola mundo<br/></div>

<p>Echamos un vistazo a las librerías de las que depende nuestro ejecutable:</p>

<div class="wp-terminal">user@computer:$ ldd Hola<br/>linux-gate.so.1 =&gt;  (0xb80d6000)<br/>libpthread.so.0 =&gt; /lib/i686/cmov/libpthread.so.0 (0xb80ad000)<br/>libdl.so.2 =&gt; /lib/i686/cmov/libdl.so.2 (0xb80a9000)<br/>libstdc++.so.6 =&gt; /usr/lib/libstdc++.so.6 (0xb7fb6000)<br/>libm.so.6 =&gt; /lib/i686/cmov/libm.so.6 (0xb7f90000)<br/>libgcc_s.so.1 =&gt; /lib/libgcc_s.so.1 (0xb7f65000)<br/>libc.so.6 =&gt; /lib/i686/cmov/libc.so.6 (0xb7e06000)<br/>/lib/ld-linux.so.2 (0xb80d7000)<br/></div>

<p>Vemos que no depende de nada extraño, es decir, neko o similar.</p>
<p>Muy bien pero esto se queda un poco pobre tratándose de un simple trace así que vamos a probar algo más. Para ello necesitaremos instalar una librería más. Con Haxe podremos programar contra el API de Flash y generar CPP gracias al wrapper de SDL que implementa NME.</p>

<div class="wp-terminal">user@computer:$ haxelib install neash<br/></div>

<p>Verás que él mismo baja de internet los ficheros necesarios y configura la instalación por lo que al parecer haxelib viene a ser algo parecido a CPAN o PEAR.</p>
<p>El código fuente del nuevo fichero que vamos a probar es el siguiente:</p>
<div class="dean_ch" style="white-space: wrap;">
<ol>
<li class="li1">
<div class="de1"><span class="kw3">import</span> flash.<span class="me1">events</span>.<span class="me1">MouseEvent</span>;</div>
</li>
<li class="li1">
<div class="de1"><span class="kw3">import</span> flash.<span class="me1">events</span>.<span class="me1">Event</span>;</div>
</li>
<li class="li1">
<div class="de1"><span class="kw3">import</span> flash.<span class="me1">display</span>.<span class="kw3">MovieClip</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li2">
<div class="de2"><span class="kw2">class</span> Prueba <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp;<span class="kw3">private</span> <span class="kw2">var</span> mc: flash.<span class="me1">display</span>.<span class="kw3">MovieClip</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp;<span class="kw3">private</span> <span class="kw2">var</span> square: flash.<span class="me1">display</span>.<span class="kw3">MovieClip</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp;<span class="kw2">function</span> <span class="kw2">new</span><span class="br0">&#40;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span></div>
</li>
<li class="li2">
<div class="de2">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;mc = flash.<span class="me1">Lib</span>.<span class="me1">current</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;drawSquare<span class="br0">&#40;</span>0xAFAFF0,<span class="nu0">50</span>,<span class="nu0">50</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;mc.<span class="kw3">stage</span>.<span class="me1">addEventListener</span><span class="br0">&#40;</span>MouseEvent.<span class="me1">MOUSE_DOWN</span>, <span class="kw3">onPress</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp;<span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li2">
<div class="de2">&nbsp; &nbsp; &nbsp;<span class="kw3">private</span> <span class="kw2">function</span> drawSquare<span class="br0">&#40;</span>pColor:<span class="kw3">Int</span>,pStartX:<span class="kw3">Int</span>,pStartY:<span class="kw3">Int</span><span class="br0">&#41;</span>:<span class="kw3">Void</span> <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;square = <span class="kw2">new</span> <span class="kw3">MovieClip</span><span class="br0">&#40;</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;square.<span class="me1">graphics</span>.<span class="kw3">beginFill</span> <span class="br0">&#40;</span>pColor<span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;square.<span class="me1">graphics</span>.<span class="kw3">moveTo</span> <span class="br0">&#40;</span>pStartX,pStartY<span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;square.<span class="me1">graphics</span>.<span class="kw3">lineTo</span> <span class="br0">&#40;</span><span class="nu0">100</span>,<span class="nu0">50</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li2">
<div class="de2">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;square.<span class="me1">graphics</span>.<span class="kw3">lineTo</span> <span class="br0">&#40;</span><span class="nu0">100</span>,<span class="nu0">100</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;square.<span class="me1">graphics</span>.<span class="kw3">lineTo</span> <span class="br0">&#40;</span><span class="nu0">50</span>,<span class="nu0">100</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;square.<span class="me1">graphics</span>.<span class="kw3">endFill</span> <span class="br0">&#40;</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;mc.<span class="me1">addChild</span><span class="br0">&#40;</span>square<span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li2">
<div class="de2">&nbsp; &nbsp; &nbsp;<span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp;<span class="kw3">static</span> <span class="kw2">function</span> main<span class="br0">&#40;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="co2">#if cpp</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; neash.<span class="me1">Lib</span>.<span class="me1">mOpenGL</span> = <span class="kw2">true</span>;</div>
</li>
<li class="li2">
<div class="de2">&nbsp; &nbsp; &nbsp; &nbsp; neash.<span class="me1">Lib</span>.<span class="me1">Init</span><span class="br0">&#40;</span><span class="st0">&quot;Prueba&quot;</span>,<span class="nu0">320</span>,<span class="nu0">200</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; neash.<span class="me1">Lib</span>.<span class="me1">SetBackgroundColour</span><span class="br0">&#40;</span>0xFFFFFF<span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="co2">#end</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw2">var</span> prueba:Prueba = <span class="kw2">new</span> Prueba<span class="br0">&#40;</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="co2">#if cpp</span></div>
</li>
<li class="li2">
<div class="de2">&nbsp; &nbsp; &nbsp; &nbsp; neash.<span class="me1">Lib</span>.<span class="me1">ShowFPS</span><span class="br0">&#40;</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; neash.<span class="me1">Lib</span>.<span class="me1">Run</span><span class="br0">&#40;</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="co2">#end</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp;<span class="br0">&#125;</span></div>
</li>
<li class="li2">
<div class="de2">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp;<span class="kw2">function</span> <span class="kw3">onPress</span><span class="br0">&#40;</span>event:MouseEvent<span class="br0">&#41;</span> <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw3">trace</span><span class="br0">&#40;</span><span class="st0">&quot;Yepa!!&quot;</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; square.<span class="me1">x</span> += <span class="nu0">4</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp;<span class="br0">&#125;</span></div>
</li>
<li class="li2">
<div class="de2">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="br0">&#125;</span></div>
</li>
</ol>
</div>
<p>Al igual que antes, primero probamos con flash:</p>

<div class="wp-terminal">user@computer:$ haxe  -swf prueba.swf -swf-version 10 -main Prueba<br/><br/><object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="557" height="557" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="src" value="http://ivanmosquera.net/wp-content/uploads/2009/11/prueba.swf" /><embed type="application/x-shockwave-flash" width="557" height="557" src="http://ivanmosquera.net/wp-content/uploads/2009/11/prueba.swf"></embed></object><br/></div>

<p>Y ahora a código nativo:</p>

<div class="wp-terminal">user@computer:$ haxe -cpp salida_prueba --remap flash:neash -lib neash -main Prueba -cp /usr/lib/haxe/lib/neash/1,0,1/neash/<br/></div>

<p>Vemos que en este caso ha sido necesario directiva de precompilación y decirle a haxe que sustituya las ocurrencias de flash por neash.</p>
<p>Por ahora la sensación que me da es que Haxe como plataforma open source para Flash ya es estable, pudiendo sustituir a MTASC perfectamente pero en cuanto a CPP la cosa puede estar demasiado verde como para cosas serias.</p>
]]></content:encoded>
			<wfw:commentRss>http://ivanmosquera.net/index.php/2009/11/02/probando-haxe/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
