<?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>Luis Adrián Rosas Wiedfeldt &#187; linea de comandos</title>
	<atom:link href="http://www.nomeva.com/tag/linea-de-comandos/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.nomeva.com</link>
	<description>Pon un lego en tu vida</description>
	<lastBuildDate>Wed, 20 Jan 2010 08:34:04 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.1</generator>
		<item>
		<title>Tutorial JSFL &#8211; Crear documentos FLA dinámicamente</title>
		<link>http://www.nomeva.com/2009/08/28/tutorial-jsfl-crear-documentos-fla-dinamicamente/</link>
		<comments>http://www.nomeva.com/2009/08/28/tutorial-jsfl-crear-documentos-fla-dinamicamente/#comments</comments>
		<pubDate>Fri, 28 Aug 2009 07:49:10 +0000</pubDate>
		<dc:creator>Luis Adrián</dc:creator>
				<category><![CDATA[Flash]]></category>
		<category><![CDATA[JSFL]]></category>
		<category><![CDATA[Tutoriales]]></category>
		<category><![CDATA[command line]]></category>
		<category><![CDATA[fla dinamicamente]]></category>
		<category><![CDATA[linea de comandos]]></category>
		<category><![CDATA[tutorial]]></category>

		<guid isPermaLink="false">http://www.nomeva.com/?p=399</guid>
		<description><![CDATA[Por fin ya de vuelta de las vacaciones y retomando nuevamente el mando de mi vida estoy aquí para compartir otro tutorial sobre JSFL, para ser exactos no es ni un Comando ni un Panel ya que la ejecución de este JSFL se hace automáticamente desde la línea de comandos mediante una llamada desde una [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: center; "><img class="aligncenter size-full wp-image-400" title="fla on the fly" src="http://www.nomeva.com/wp-content/uploads/2009/08/fla_on_the_fly.jpg" alt="fla on the fly" width="320" height="200" /></p>
<p style="text-align: left;">Por fin ya de vuelta de las vacaciones y retomando nuevamente el mando de mi vida estoy aquí para compartir otro <a title="Tutoriales en nomeva.com" href="http://www.nomeva.com/category/tutoriales/" target="_blank"><strong>tutorial</strong></a> sobre <a title="JSFL en nomeva.com" href="http://www.nomeva.com/category/jsfl/" target="_blank"><strong>JSFL</strong></a>, para ser exactos no es ni un <a title="Tutorial JSFL - Introducción a comandos" href="http://www.nomeva.com/2008/09/26/tutorial-jsfl-introduccion-a-comando/" target="_blank"><strong>Comando</strong></a> ni un <a title="Tutorial JSFL - Introduccióna Paneles" href="http://www.nomeva.com/2009/04/24/tutorial-jsfl-introduccion-a-paneles/" target="_blank"><strong>Panel</strong></a> ya que la ejecución de este JSFL se hace automáticamente desde la línea de comandos mediante una llamada desde una aplicación AIR o simplemente haciendo doble clic.</p>
<h1>HISTORIA</h1>
<p>El otro día hablando con <strong><a title="Iván Gajate" href="http://www.yporqueno.es/blog/" target="_blank">Iván Gajate</a></strong> me preguntaba sobre la forma de <strong>crear FLA&#8217;s dinámicamente</strong> y automáticamente me vino a la cabeza <strong>JSFL </strong>aunque no es la súper solución porque lo que realmente queríamos conseguir es utilizar una <strong>librería en C</strong> para generar FLA&#8217;s con ciertas características peculiares como el tamaño, el color y los fotogramas por segundo, pero como ninguno de los dos es un experto programador en C pues optamos por el camino de <strong>JSFL </strong>que me gusta y controlo más.</p>
<h1>LA IDEA</h1>
<p>Desde la aplicación AIR se generará un fichero de texto que nos servirá para configurar las características del FLA que se va a crear y luego simplemente ejecutamos el JSFL. Ya está, así de simple.</p>
<h2>COSAS A DESTACAR (o que vamos a aprender)</h2>
<p>Con este tutorial aprenderemos:</p>
<ul>
<li>Otra forma de <strong><a title="Ejecución de scripts JSFL" href="http://help.adobe.com/es_ES/Flash/10.0_ExtendingFlash/WS5b3ccc516d4fbf351e63e3d118a9024f3f-7fe8.html" target="_blank">ejecutar</a></strong> los ficheros JSFL.</li>
<li>El uso del objeto <a title="Objeto FLfile" href="http://help.adobe.com/es_ES/Flash/10.0_ExtendingFlash/WS5b3ccc516d4fbf351e63e3d118a9024f3f-7fa1.html" target="_blank"><strong>FLfile</strong></a>, exactamente del método <a title="Método read del objeto FLfile" href="http://help.adobe.com/es_ES/Flash/10.0_ExtendingFlash/WS5b3ccc516d4fbf351e63e3d118a9024f3f-7adf.html" target="_blank"><strong>read</strong></a>.</li>
<li>Que podemos hacer más cosas de las que parece a simple vista, por ejemplo a cerrar la propia aplicación.</li>
</ul>
<h1>MANOS A LA OBRA</h1>
<h2>Parte 1: JSFL desde la línea de comandos</h2>
<p>Hasta ahora hemos visto tres formas de utilizar JSFL, a través de <a title="Tutorial JSFL - Introducción a comandos" href="http://www.nomeva.com/2008/09/26/tutorial-jsfl-introduccion-a-comando/" target="_blank"><strong>Comando</strong></a>, a través de <a title="Tutorial JSFL - Introduccióna Paneles" href="http://www.nomeva.com/2009/04/24/tutorial-jsfl-introduccion-a-paneles/" target="_blank"><strong>Panel</strong></a> y a través de <a title="Tutorial JSFL - Introducción a herramientas (tools)" href="http://www.nomeva.com/2009/07/17/tutorial-jsfl-introduccion-herramientas-tools/" target="_blank"><strong>Herramientas</strong></a>, pero esas no son todas las formas en las que podemos utilizar <strong>JSFL </strong>ya que existe una más que es de la que vamos a echar mano hoy, me refiero a la ejecución de JSFL mediante <strong>línea de comandos</strong>.</p>
<p>Me explico, dentro de nuestro equipo tenemos:</p>
<p><em>lugar_de_instalacion_de_flash\flash.exe</em></p>
<p>y digamos, por ponerle un nombre, que en<strong> C </strong>tenemos una carpeta que se llama <strong>ejemplo </strong>y que dentro de ejemplo tenemos un fichero que se llama <strong>generar_fla_dinamicamente.jsfl</strong>, entonces podríamos decir desde la línea de comandos lo siguiente:</p>
<p><em>&#8220;lugar_de_instalacion_de_flash\<strong>flash.exe</strong>&#8221; &#8220;C:\ejemplo\<strong>generar_fla_dinamicamente.jsfl</strong>&#8220;</em></p>
<p>esto ejecutaría Flash y automáticamente cargaría el JSFL para ejecutarlo, fácil no?, que frikis que sómos, jejeje.</p>
<h2>Parte 2: Leer el fichero de configuración</h2>
<p>Ahora que ya estamos en nuestro ámbito, recordemos que JSFL sólo funciona con Flash abierto y gracias a la ejecución de JSFL mediante línea de comandos hemos conseguido abrir Flash ya podemos continuar con el proceso del JSFL. Como hemos dicho vamos a leer un fichero de texto que la aplicación AIR ha generado, para seguir con la buena costumbre y quizá también por casualidad o no se muy bien porque, la aplicación AIR genera ese fichero en <strong>C </strong>dentro de la carpeta <strong>ejemplo</strong>.</p>
<p>El contenido del fichero es muy simple, se encuentran <strong>emparejados </strong><em>variable </em>y <em>valor </em>separados por <strong>ampersand</strong> (<strong>&amp;</strong>), como se de variables GET se tratara. Por ejemplo:</p>
<p><em>frameRate=50&amp;backgroundColor=#00FFFF&amp;width=800&amp;height=200</em></p>
<p>Esto ahora mismo no viene al caso, pero bueno ya lo escribí así que ahí se quedará y más tarde que lo necesitemos hablaremos de él. Lo que realmente necesitamos es utilizar el objeto <a title="Objeto FLfile" href="http://help.adobe.com/es_ES/Flash/10.0_ExtendingFlash/WS5b3ccc516d4fbf351e63e3d118a9024f3f-7fa1.html" target="_blank"><strong>FLfile</strong></a> para que con ayuda del método <a title="Método read del objeto FLfile" href="http://help.adobe.com/es_ES/Flash/10.0_ExtendingFlash/WS5b3ccc516d4fbf351e63e3d118a9024f3f-7adf.html" target="_blank"><strong>read</strong></a> leamos el fichero de configuración, de tal forma que nuestro código quedaría así:</p>
<pre lang="javascript">var sConfiguration = FLfile.read("ruta del fichero de configuración");</pre>
<p>Ahora si, dentro de la variable <strong>sConfiguration </strong>tenemos el contenido del fichero de configuración de tal forma que vamos a tratar el contenido para utilizarlo más adelante, para esto vamos a utilizar funciones básicas de <strong>JavaScript</strong>, es decir <strong>splits </strong>y <strong>bucles </strong>para separar y obtener las variables y su valor, al final lo guardaremos en un <em>array asociativo</em> para tener todas las variables en un mismo sitio y listo, esto lo conseguimos con el siguiente código:</p>
<pre lang="javascript">var aConfiguration = new Array();
var aValues = sConfiguration.split("&amp;");
var nTotalValues = aValues.length;
for(var i = 0; i &lt; nTotalValues; i++)
{
	var aTmp = aValues[i].split("=");
	aConfiguration[aTmp[0]] = aTmp[1];
}</pre>
<h2>Parte 3: Crear el nuevo documento, configurarlo y cerrar Flash</h2>
<p>Bueno hasta ahora tenemos acceso al DOM de Flash ya que lo hemos abierto mediante línea de comandos, también tenemos una configuración almacenada en un array asociativo ya sólo nos queda crear el documento y configurarlo, esto lo conseguimos de dos formas, primero lo primero, para crear el documento Fla utilizaremos el método <a title="Método createDocument del objeto fl" href="http://help.adobe.com/es_ES/Flash/10.0_ExtendingFlash/WS5b3ccc516d4fbf351e63e3d118a9024f3f-7bab.html" target="_blank"><strong>createDocument </strong></a>del objeto <strong><a title="Objeto fl" href="http://help.adobe.com/es_ES/Flash/10.0_ExtendingFlash/WS5b3ccc516d4fbf351e63e3d118a9024f3f-7fa0.html" target="_blank">fl</a></strong>, este método nos devuelve una referencia al documento creado, lo vamos a almacenar en una variable para más adelante modificar sus propiedades, el ejemplo de la creación del documento es el siguiente:</p>
<pre lang="javascript">var oDoc = fl.createDocument();</pre>
<p>Ahora simplemente tenemos que configurar los valores que nos indicaron en el fichero de configuración, que ahora ya los tenemos en un <em>array asociativo</em>, así que con una comprobación y una asignación lo tendremos todo resuelto. En este caso deseamos modificar el <a title="Propiedad backgroundColor del objeto Document" href="http://help.adobe.com/es_ES/Flash/10.0_ExtendingFlash/WS5b3ccc516d4fbf351e63e3d118a9024f3f-7e5a.html" target="_blank"><strong>color de fondo</strong></a>, los <a title="Propiedad frameRate del objeto Document" href="http://help.adobe.com/es_ES/Flash/10.0_ExtendingFlash/WS5b3ccc516d4fbf351e63e3d118a9024f3f-7e54.html" target="_blank"><strong>fotogramas por segundo</strong></a>, el <a title="Propiedad height del objeto Document" href="http://help.adobe.com/es_ES/Flash/10.0_ExtendingFlash/WS5b3ccc516d4fbf351e63e3d118a9024f3f-7e53.html" target="_blank"><strong>alto</strong></a> y el <a title="Propiedad width del objeto Document" href="http://help.adobe.com/es_ES/Flash/10.0_ExtendingFlash/WS5b3ccc516d4fbf351e63e3d118a9024f3f-7d3d.html" target="_blank"><strong>ancho</strong></a> del documento, así que pare esto simplemente tendremos que modificar esas propiedades de nuestro objeto <strong><a title="Objeto Document" href="http://help.adobe.com/es_ES/Flash/10.0_ExtendingFlash/WS5b3ccc516d4fbf351e63e3d118a9024f3f-7ffa.html" target="_blank">Document</a></strong>. El ejemplo es el siguiente:</p>
<pre lang="javascrip">if(aConfiguration["backgroundColor"])
	oDoc.backgroundColor = aConfiguration["backgroundColor"];

if(aConfiguration["frameRate"])
	oDoc.frameRate = Number(aConfiguration["frameRate"]);

if(aConfiguration["width"])
	oDoc.width = Number(aConfiguration["width"]);

if(aConfiguration["height"])
	oDoc.height = Number(aConfiguration["height"]);</pre>
<p>Y listo, ya hemos configurado el nuevo documento, ahora simplemente nos queda guardar el documento y cerrar Flash. Para guardar el documento utilizaremos el método <a title="Método saveDocument del objeto fl" href="http://help.adobe.com/es_ES/Flash/10.0_ExtendingFlash/WS5b3ccc516d4fbf351e63e3d118a9024f3f-7d12.html" target="_blank"><strong>saveDocument</strong></a> del objeto <strong><a title="Objeto fl" href="http://help.adobe.com/es_ES/Flash/10.0_ExtendingFlash/WS5b3ccc516d4fbf351e63e3d118a9024f3f-7fa0.html" target="_blank">fl</a></strong>, éste método recibe dos parámetros, en el primero indicamos el documento que deseamos guardar y en el segundo la ruta en la que deseamos guardar el documento, por ejemplo:</p>
<pre lang="javascrip">fl.saveDocument(oDoc, "ruta_donde_queremos_guardar_el_documento\documento_creado_dinamicamente.jsfl")</pre>
<p>Vale pues ahora vamos a una de las cosas que más me gusta y sorprende, quizá sea un tontería pero saber que tenemos ese poder me gusta mucho, jejeje. Vamos a cerrar Flash, ya que una vez que hemos creado el documento, lo hemos configurado y lo hemos guardado, ya no necesitamos tener abierto Flash para nada, así que allá vamos. Esta tarea la conseguimos haciendo uso del método <strong><a title="Método quit del objeto fl" href="http://help.adobe.com/es_ES/Flash/10.0_ExtendingFlash/WS5b3ccc516d4fbf351e63e3d118a9024f3f-7b94.html" target="_blank">quit</a></strong> del objeto <strong><a title="Objeto fl" href="http://help.adobe.com/es_ES/Flash/10.0_ExtendingFlash/WS5b3ccc516d4fbf351e63e3d118a9024f3f-7fa0.html" target="_blank">fl</a></strong>, éste método recibe un parámetro opcional para preguntar al usuario sobre guardar los cambios, en nuestro caso no lo queremos así que pasaremos false, el ejemplo es el siguiente:</p>
<pre lang="javascrip">fl.quit(false);</pre>
<p>Y listo con esto terminamos este Tutorial que espero os sea de utilidad o que de una vez por todas los haga pensar en utilizar más a menudo JSFL.</p>
<h1>DESCARGAS</h1>
<p>En este caso pongo un <a title="Ejemplo del Tutorial de JSFL sobre creación dinámica de documentos fla" href="http://www.nomeva.com/wp-content/uploads/2009/08/tutorial_jsfl_creacion_dinamica_de_documentos_fla.zip" target="_blank"><strong>zip</strong></a> donde está todo preparado para funcionar en la carpeta ejemplo en el disco duro C, si lo quieres modificar simplemente cambia la ruta en la primera variable del fichero JSFL, la variable <em>sPath</em>.</p>
<p>Saludos, para cualquier cosa, dudas o comentarios aquí estaré.</p>
<h3>Entradas relacionadas</h3>
<ul>
<li><a title="Recursos JSFL en nomeva.com" href="../2008/08/24/recursos-jsfl/" target="_blank">Recursos JSFL</a></li>
<li><a title="Tutorial JSFL - Introducción a comandos" href="../2008/09/26/tutorial-jsfl-introduccion-a-comando/" target="_blank">Tutorial JSFL &#8211; Introducción a comandos</a></li>
<li><a title="Tutorial JSFL - Comandos con interfaz gráfica" href="../2008/10/12/tutorial-jsfl-comandos-con-interfaz-grafica/" target="_blank">Tutorial JSFL &#8211; Comandos con interfaz gráfica</a></li>
<li><a title="Tutorial JSFL - Comandos con interfaz gráfica II" href="../2008/11/09/tutorial-jsfl-comandos-con-interfaz-grafica-ii/" target="_blank">Tutorial JSFL &#8211; Comandos con interfaz gráfica II</a></li>
<li><a title="Tutorial JSFL - Introducción a Paneles" href="../2009/04/24/tutorial-jsfl-introduccion-a-paneles/" target="_blank">Tutorial JSFL &#8211; Introducción a Paneles</a></li>
<li><a title="Tutorial JSFL - Panel Auto Save" href="../2009/06/28/tutorial-jsfl-panel-auto-save/" target="_blank">Tutorial JSFL &#8211; Panel Auto Save</a></li>
<li><a title="Tutorial JSFL - Guardar copia FLA 1/2 (comando)" href="../2009/07/05/tutorial-jsfl-guardar-copia-fla-12-comando/" target="_blank">Tutorial JSFL &#8211; Guardar copia FLA 1/2 (comando)</a></li>
<li><a title="Tutorial JSFL - Introducción a herramientas (tools)" href="http://www.nomeva.com/2009/07/17/tutorial-jsfl-introduccion-herramientas-tools/" target="_blank">Tutorial JSFL &#8211; Introducción a herramientas (tools)<strong><br />
</strong></a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.nomeva.com/2009/08/28/tutorial-jsfl-crear-documentos-fla-dinamicamente/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
	</channel>
</rss>

