<?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; Paneles</title>
	<atom:link href="http://www.nomeva.com/category/tutoriales/jsfl-tutoriales/paneles-jsfl-tutoriales-tutoriales/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>
	<generator>http://wordpress.org/?v=2.9.1</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Tutorial JSFL &#8211; Creación de Paneles con Flex 2ª parte</title>
		<link>http://www.nomeva.com/2009/11/27/tutorial-jsfl-creacion-de-paneles-con-flex-2a-parte/</link>
		<comments>http://www.nomeva.com/2009/11/27/tutorial-jsfl-creacion-de-paneles-con-flex-2a-parte/#comments</comments>
		<pubDate>Fri, 27 Nov 2009 07:05:59 +0000</pubDate>
		<dc:creator>Luis Adrián</dc:creator>
				<category><![CDATA[Flex]]></category>
		<category><![CDATA[JSFL]]></category>
		<category><![CDATA[Paneles]]></category>
		<category><![CDATA[Tutoriales]]></category>
		<category><![CDATA[MMExecute]]></category>
		<category><![CDATA[panel]]></category>
		<category><![CDATA[tutorial]]></category>

		<guid isPermaLink="false">http://www.nomeva.com/?p=494</guid>
		<description><![CDATA[Bienvenidos a este nuevo tutorial de jsfl, en esta ocasión continuaremos viendo los Paneles y como desarrollarlos con Adobe Flex.
INTRODUCCIÓN
Si recordamos el anterior post dónde empezamos a hablar sobre el uso de Flex para desarrollar Paneles y teniendo en cuenta que a mi querido amigo Jorge no le acabó de convencer  .
Bueno para ser [...]]]></description>
			<content:encoded><![CDATA[<p>Bienvenidos a este nuevo <strong><a title="Tutoriales en nomeva.com" href="http://www.nomeva.com/category/tutoriales/" target="_blank">tutorial</a></strong> de <strong><a title="JSFL en nomeva.com" href="http://www.nomeva.com/category/jsfl/" target="_blank">jsfl</a></strong>, en esta ocasión continuaremos viendo los <a title="Paneles en nomeva.com" href="http://www.nomeva.com/category/tutoriales/jsfl-tutoriales/paneles-jsfl-tutoriales-tutoriales/" target="_blank"><strong>Paneles</strong></a> y como desarrollarlos con <strong><a title="Adobe Flex" href="http://www.adobe.com/es/products/flex/" target="_blank">Adobe Flex</a></strong>.</p>
<h1>INTRODUCCIÓN</h1>
<p>Si recordamos el <strong><a title="Tutorial JSFL - MMExecute, creación de Panel con Flex" href="http://www.nomeva.com/2009/11/19/tutorial-jsfl-mmexecute-creacion-panel-con-flex/" target="_blank">anterior post</a></strong> dónde empezamos a hablar sobre el uso de <strong><a title="Adobe Flex" href="http://www.adobe.com/es/products/flex/" target="_blank">Flex</a></strong> para desarrollar <strong><a title="Paneles en nomeva.com" href="http://www.nomeva.com/category/tutoriales/jsfl-tutoriales/paneles-jsfl-tutoriales-tutoriales/" target="_blank">Paneles</a></strong> y teniendo en cuenta que a mi querido amigo <strong><a title="Jorge Solis en Twitter" href="http://twitter.com/solisarg" target="_blank">Jorge</a></strong> no le acabó de convencer <img src='http://www.nomeva.com/wp-includes/images/smilies/icon_razz.gif' alt=':P' class='wp-smiley' /> .</p>
<p><a href="http://www.nomeva.com/wp-content/uploads/2009/11/Captura-de-pantalla-2009-11-26-a-las-08.19.59.png"><img class="aligncenter size-full wp-image-505" title="Tweet de solisarg" src="http://www.nomeva.com/wp-content/uploads/2009/11/Captura-de-pantalla-2009-11-26-a-las-08.19.59.png" alt="Tweet de solisarg" width="501" height="75" /></a>Bueno para ser sinceros hay que contar la historia completa, no le acabó de convencer al principio, luego al ver de que se trataba ya le gustó:</p>
<p><a style="text-decoration: none;" href="http://www.nomeva.com/wp-content/uploads/2009/11/Captura-de-pantalla-2009-11-27-a-las-08.02.58.png"><img class="aligncenter size-full wp-image-506" title="Ahora si, ya veo de que se trataba ese tweet" src="http://www.nomeva.com/wp-content/uploads/2009/11/Captura-de-pantalla-2009-11-27-a-las-08.02.58.png" alt="Ahora si, ya veo de que se trataba ese tweet" width="522" height="72" /></a></p>
<p>A continuación veremos como hacer mucho más, veremos como utilizar las <strong>bondades</strong> de <strong>Flex</strong> para crear fácilmente <strong>ricas interfaces</strong> y como comunicarlo con <strong>JSFL</strong> para ejecutar las tareas que nos interesen.</p>
<p>En esta ocasión espero que os guste a todos <img src='http://www.nomeva.com/wp-includes/images/smilies/icon_razz.gif' alt=':P' class='wp-smiley' /> </p>
<h1>DESARROLLO</h1>
<h2>PARTE FLEX</h2>
<p>En el post anterior vimos como utilizar el método <strong><a title="Método MMExecute" href="http://help.adobe.com/en_US/AS3LCR/Flash_10.0/adobe/utils/package.html#MMExecute()" target="_blank">MMExecute</a></strong> para poder ejecutar código <strong>JSFL</strong> desde nuestras películas <strong>swf</strong>, pero para los que somos un poco especiales a la hora de programar y que nos gusta tener las cosas <strong>organizadas</strong>, separadas, modularizadas para poder <strong>escalarlas</strong> fácilmente y <strong>reutilizarlas</strong> &#8230; <em>uyy ya me fuí por las ramas</em> &#8230; bueno, el tema es que no es la mejor solución <strong>mezclar</strong> la lógica <strong>JSFL</strong> con el <strong>interfaz</strong>, porque hacer cambios y probar puedes ser mortal y generar muchos <strong>errores</strong> así como una enorme <strong>pérdida de tiempo</strong>.</p>
<p>Bueno, lo anterior sirve de introducción para presentarles el método <strong><a title="Método runScript del objeto fl" href="http://help.adobe.com/en_US/Flash/10.0_ExtendingFlash/WS5b3ccc516d4fbf351e63e3d118a9024f3f-7fde.html" target="_blank">runScript</a></strong> del objeto <strong><a title="Objeto fl" href="http://help.adobe.com/en_US/Flash/10.0_ExtendingFlash/WS5b3ccc516d4fbf351e63e3d118a9024f3f-7fa0.html" target="_blank">fl</a></strong>, este método nos permite desde código <strong>JSFL</strong> ejecutar un <strong>script externo</strong> al código. Este método recibe como <strong>parámetro obligatorio</strong> la <strong>ruta del script JSFL</strong> que deseamos ejectuar, como <strong>parámetros opcionales</strong> el <strong>nombre del método</strong> y los <strong>parámetros que enviamos</strong> al método.</p>
<pre class="brush:js">fl.runScript("file:///C|/testScript.jsfl", "testFunct", 10, 1);</pre>
<p>Además vamos a utilizar la propiedad <strong><a title="Propiedad configURI del Objeto fl" href="http://help.adobe.com/en_US/Flash/10.0_ExtendingFlash/WS5b3ccc516d4fbf351e63e3d118a9024f3f-7fe1.html" target="_blank">configURI</a></strong> del objeto <strong><a title="Objeto fl" href="http://help.adobe.com/en_US/Flash/10.0_ExtendingFlash/WS5b3ccc516d4fbf351e63e3d118a9024f3f-7fa0.html" target="_blank">fl</a>, </strong>esta propiedad nos devuelve el <strong>path</strong> del usuario del directorio <strong>Configuration</strong> expresado en formato <em>file:/// </em>, en el cual encontramos los directorios <strong>Commands</strong> y <strong>WindowSWF</strong> por ejemplo. Y esto lo queremos para hacer algo parecido a esto:</p>
<pre class="brush:js">fl.runScript( fl.configURI + "Commands/Test.jsfl" );</pre>
<p>Bueno, esto nos servirá al final para poder ejecutar desde nuestras aplicaciones <strong>Flex</strong> código <strong>JSFL</strong> que tengamos <strong>centralizado</strong> en la carpeta<strong> Commands</strong> por ejemplo, algo parecido a lo siguiente:</p>
<pre class="brush:as3">MMExecute('fl.runScript(fl.configURI + "Commands/Test.jsfl", "testFunct", 10, 1)');</pre>
<p>Vale, hasta ahora vamos bien. Todo lo que hemos visto lo vamos a utilizar para crear una panel que particularmente me resulta muy útil. Crearemos el <strong>Panel Gallery</strong>.</p>
<h2>PARTE JSFL</h2>
<p>Ahora si vamos que se va a poner bueno el tema. Jejeje, es necesario un poco de relax porque sino resulta difícil leer y escribir también, porque aquí somos dos, tu querido lector y yo.</p>
<blockquote><p>Lo que pasa es que está semana ha empezado bien, pero de pronto el lunes por la noche nos dimos cuenta que ya no quedaban más episodios de la 4ª temporada de <strong><a title="Dexter" href="http://es.wikipedia.org/wiki/Dexter" target="_blank">Dexter</a></strong> por ver, así que nos pusimos a buscar algo más y encontramos la 5ª temporada de <strong><a title="Héreos en Wikipedia" href="http://es.wikipedia.org/wiki/Héroes_(serie_de_TV)" target="_blank">Héroes</a></strong>, así que estas noches me han tenido un poco entre la serie y escribir, preparar y desarrollar este tutorial. Bueno ya que nos relajamos y hablamos un poco, creo que podemos continuar.</p>
<p>Ya por último y para terminar con este pequeño lapso de relax, quiero recomendar una serie súper interesante que vi hace poco, me refiero a <strong><a title="Defying Gravity en Microsiervos" href="http://www.microsiervos.com/archivo/peliculas-tv/defying-gravity.html" target="_blank">Defying gravity</a><span style="font-weight: normal;">, este es otro de los tesoros que he descubierto gracias a </span><a title="Luis Adrián en Twitter" href="http://www.twitter.com/supremo_tata" target="_blank">Twitter</a></strong>.</p></blockquote>
<p><strong>Panel Gallery</strong>, este panel sirve para tener un pequeño visor de imágenes del directorio que configuremos en nuestro equipo dentro de Flash, desde ahí podemos ver, seleccionar e importar las imágenes que deseemos al documento que estemos editando.</p>
<p>Para desarrollar este panel necesitaremos obtener la <strong>ruta de la carpeta</strong> que deseamos visualizar, esto lo podemos hacer con el método <strong><a title="Método browseForFolderURL del objeto fl" href="http://help.adobe.com/en_US/Flash/10.0_ExtendingFlash/WS5b3ccc516d4fbf351e63e3d118a9024f3f-7bb0.html" target="_blank">browseForFolderURL</a></strong> del objeto <strong><a title="Objeto fl" href="http://help.adobe.com/en_US/Flash/10.0_ExtendingFlash/WS5b3ccc516d4fbf351e63e3d118a9024f3f-7fa0.html" target="_blank">fl</a></strong>, este método recibe como parámetro una cadena en la que especificamos el mensaje que mostrará al usuario y nos devolverá la ruta que especifique el usuario en formato<em> file:///</em>. Por ejemplo:</p>
<pre class="brush:js">var folderURI = fl.browseForFolderURL("Select a folder.");</pre>
<p>Una vez que tenemos la ruta lo siguiente es <strong>listar las imágenes</strong> que tenemos en ese directorio, esto lo hacemos con el método <strong><a title="Método listFolder del objeto FLfile" href="http://help.adobe.com/en_US/Flash/10.0_ExtendingFlash/WS5b3ccc516d4fbf351e63e3d118a9024f3f-7ae0.html" target="_blank">listFolder</a></strong> del objeto <strong><a title="FLfile" href="http://help.adobe.com/en_US/Flash/10.0_ExtendingFlash/WS5b3ccc516d4fbf351e63e3d118a9024f3f-7fa1.html" target="_blank">FLfile</a></strong>, este método recibe como <strong>parámetro obligatorio la ruta</strong> de la cual queremos listar directorio o imágenes (en nuestro caso es la ruta que obtuvimos en el paso anterior) y como parámetro opcional indicamos el tipo de lista que deseamos, los valores admitidos son: &#8220;<em>files</em>&#8221; o &#8220;<em>directories</em>&#8220;. En nuestro caso utilizaremos &#8220;<strong><em>files</em></strong>&#8220;, pero no sólo eso, el primer parámetro también nos permite añadir una máscara para que la búsqueda filtre por un tipo de fichero, está máscara funciona igual que en un terminal, por ejemplo la máscara que utilizaremos nosotros será: &#8220;<strong>*.jpg</strong>&#8220;. El ejemplo quedaría de la siguiente forma:</p>
<pre class="brush:js">var fileMask = "*.jpg";
var list = FLfile.listFolder(folderURI + "/" + fileMask, "files");</pre>
<p>Ahora si ya estamos muy cerca. Bueno, una vez que obtenemos la lista de imágenes vamos a almacenarlas en un componente <strong><a title="Componente Tree de Adobe Flex 3" href="http://livedocs.adobe.com/flex/3/html/help.html?content=dpcontrols_8.html" target="_blank">Tree</a></strong> para mostrarlas al usuario y para facilitar el uso utilizaremos el evento <strong>change</strong> para cargar la imagen seleccionada y mostrarla en un componente <strong><a title="Componente Image de Adobe Flex 3" href="http://livedocs.adobe.com/flex/3/html/help.html?content=controls_16.html" target="_blank">Image</a><span style="font-weight: normal;">, por último utilizaremos el evento </span>click<span style="font-weight: normal;"> del componente </span><a title="Componente Image de Adobe Flex 3" href="http://livedocs.adobe.com/flex/3/html/help.html?content=controls_16.html" target="_blank">Image</a><span style="font-weight: normal;"> para importar la imagen seleccionada al documento fla</span></strong>. Esto último lo hacemos con el método <strong><a title="Método importFile del Objeto Document" href="http://help.adobe.com/en_US/Flash/10.0_ExtendingFlash/WS5b3ccc516d4fbf351e63e3d118a9024f3f-7dfd.html" target="_blank">importFile</a></strong> del objeto <strong><a title="Objeto Document" href="http://help.adobe.com/en_US/Flash/10.0_ExtendingFlash/WS5b3ccc516d4fbf351e63e3d118a9024f3f-7ffa.html" target="_blank">Document</a></strong>, este método recibe como <strong>parámetro obligatorio la ruta del fichero</strong> que deseamos importar en formato <em>file:///</em>, y como <strong>parámetro opcional</strong> un valor <strong>booleano</strong> que indica si deseamos <strong>importar</strong> el fichero <strong>a la biblioteca</strong> o no, el valor por defecto es <strong>false</strong> y lo que hace es importarla a la biblioteca y además instanciarla en el escenario. Por ejemplo:</p>
<pre class="brush:js">fl.getDocumentDOM.importFile(URI);</pre>
<p>Y con esto lo hemos resuelto. YATA!!!</p>
<h1 style="font-size: 2em;">NOTAS</h1>
<p>Para acompañar este tutorial y como premio por haberte leído todo he creado como es habitual un fichero de ejemplo, pero con unas perlitas extras de funcionalidad.</p>
<p>He dividido el panel en 4 partes:</p>
<ul>
<li><strong>Document</strong>, encontraremos herramientas para modificar <strong>on the fly</strong> el color de fondo del documento y las dimensiones.</li>
<li><strong>Gallery</strong>, el resultado del tutorial que hemos explicado.</li>
<li><strong>Library</strong>, una herramienta para renombrar varios items de la biblioteca al mismo tiempo, pudiendo añadir prefijo, sufijo o modificar completamente el nombre.</li>
<li><strong>Utils</strong>, un botón para recargar las herramientas, muy útil cuando se desarrollan <strong><a title="Tutoria JSFL - Introducción a herramientas (tools)" href="http://www.nomeva.com/2009/07/17/tutorial-jsfl-introduccion-herramientas-tools/" target="_blank">Tools</a></strong> (herramientas) con <strong>JSFL</strong>.</li>
</ul>
<blockquote><p>Disculpad el desorden del post, es lo que tiene escribir a ratos en el tren y por la noche mientras se ven series. En un principio tenía una idea de como quería escribir un post, pero eso fue hace tanto tiempo que al final tenía otra idea diferente, así que las cosas han salido como la pueden ver aquí. Espero que os sea de utilidad.</p></blockquote>
<h1>DESCARGAS</h1>
<p>Bueno, las descargas son en este caso son:</p>
<ul>
<li><strong><a title="Extensión MXP de Panel nomeva con utilerías para documentos, bibliotecas y galery" href="http://www.nomeva.com/wp-content/uploads/2009/11/panel-nomeva.mxp">Extensión</a></strong> auto instalable mediante <strong>Adobe Extensión Manager</strong>. Panel nomeva <strong>MXP</strong>.</li>
<li><strong><a title="Paquete ZIP de Panel nomeva con utilerías para documentos, bibliotecas y galery" href="http://www.nomeva.com/wp-content/uploads/2009/11/panel-nomeva.zip" target="_blank">Paquete ZIP</a></strong> con <strong>Panel swf </strong>y ficheros JSFL necesarios para instalar manualmente el Panel.</li>
<li><strong><a title="Paquete ZIP con el Proyecto Flex de Panel nomeva con utilerías para documentos, bibliotecas y galery" href="http://www.nomeva.com/wp-content/uploads/2009/11/Flex-Project-Panel-nomeva.zip" target="_blank">Proyecto Flex</a></strong> con todo el código necesario para compilar y ver las tripas del Panel.</li>
</ul>
<h1>EJEMPLO</h1>
<p><object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="400" height="250" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="allowfullscreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="src" value="http://vimeo.com/moogaloop.swf?clip_id=7846615&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=0&amp;color=&amp;fullscreen=1" /><embed type="application/x-shockwave-flash" width="400" height="250" src="http://vimeo.com/moogaloop.swf?clip_id=7846615&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=0&amp;color=&amp;fullscreen=1" allowscriptaccess="always" allowfullscreen="true"></embed></object></p>
<p><a href="http://vimeo.com/7846615">Ejemplo Panel nomeva &#8211; Flex + JSFL 2ª parte</a> from <a href="http://vimeo.com/user2702173">Luis Adrián Rosas Wiedfeldt</a> on <a href="http://vimeo.com">Vimeo</a>.</p>
<h1>ALGO MÁS</h1>
<p>Si, lo único que falta son vuestros comentarios, opiniones para tener un feedback y saber que os gusta y que os disgusta, jejeje.</p>
<h3>Entradas relacionadas</h3>
<ul>
<li><a title="Recursos JSFL en nomeva.com" href="../category/2008/08/24/recursos-jsfl/" target="_blank">Recursos JSFL</a></li>
<li><a title="Tutorial JSFL - Introducción a comandos" href="../category/2008/09/26/tutorial-jsfl-introduccion-a-comando/" target="_blank">Tutorial JSFL – Introducción a comandos</a></li>
<li><a title="Tutorial JSFL - Comandos con interfaz gráfica" href="../category/2008/10/12/tutorial-jsfl-comandos-con-interfaz-grafica/" target="_blank">Tutorial JSFL – Comandos con interfaz gráfica</a></li>
<li><a title="Tutorial JSFL - Comandos con interfaz gráfica II" href="../category/2008/11/09/tutorial-jsfl-comandos-con-interfaz-grafica-ii/" target="_blank">Tutorial JSFL – Comandos con interfaz gráfica II</a></li>
<li><a title="Tutorial JSFL - Introducción a Paneles" href="../category/2009/04/24/tutorial-jsfl-introduccion-a-paneles/" target="_blank"><strong>Tutorial JSFL – Introducción a Paneles</strong></a></li>
<li><strong><a title="Tutorial JSFL - Panel Auto Save" href="../category/2009/06/28/tutorial-jsfl-panel-auto-save/" target="_blank">Tutorial JSFL – Panel Auto Save</a></strong></li>
<li><strong><a title="Tutorial JSFL - MMExecute, creación de Panel con Flex" href="http://www.nomeva.com/2009/11/19/tutorial-jsfl-mmexecute-creacion-panel-con-flex/" target="_blank">Tutorial JSFL &#8211; MMExecute, creación de Panel con Flex</a></strong></li>
<li><a title="Tutorial JSFL - Guardar copia FLA 1/2 (comando)" href="../category/2009/07/05/tutorial-jsfl-guardar-copia-fla-12-comando/" target="_blank">Tutorial JSFL – Guardar copia FLA 1/2 (comando)</a></li>
<li><a title="Tutorial JSFL - Introducción a herramientas (tools)" href="../2009/07/17/tutorial-jsfl-introduccion-herramientas-tools/" target="_blank">Tutorial JSFL – Introducción a herramientas (tools)</a></li>
<li><a title="Tutorial JSFL - Localización de contenidos (comando)" href="http://www.nomeva.com/2009/11/11/tutorial-jsfl-localizacion-de-contenidos-comando/" target="_blank">Tutorial JSFL &#8211; Localización de contenidos (comando)</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.nomeva.com/2009/11/27/tutorial-jsfl-creacion-de-paneles-con-flex-2a-parte/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Tutorial JSFL &#8211; MMExecute, creación de Panel con Flex</title>
		<link>http://www.nomeva.com/2009/11/19/tutorial-jsfl-mmexecute-creacion-panel-con-flex/</link>
		<comments>http://www.nomeva.com/2009/11/19/tutorial-jsfl-mmexecute-creacion-panel-con-flex/#comments</comments>
		<pubDate>Thu, 19 Nov 2009 07:09:31 +0000</pubDate>
		<dc:creator>Luis Adrián</dc:creator>
				<category><![CDATA[Flash]]></category>
		<category><![CDATA[JSFL]]></category>
		<category><![CDATA[Paneles]]></category>
		<category><![CDATA[extension]]></category>
		<category><![CDATA[Flex]]></category>
		<category><![CDATA[MMExecute]]></category>
		<category><![CDATA[mxp]]></category>
		<category><![CDATA[panel]]></category>
		<category><![CDATA[tutorial]]></category>

		<guid isPermaLink="false">http://www.nomeva.com/?p=478</guid>
		<description><![CDATA[Bienvenidos, en esta ocasión retomaremos el tema de los Paneles pero enfocado a su creación mediante Adobe Flex.
Antes o después de leer este tutorial sería interesante leer el este otro post sobre la introducción a la creación de Paneles.
INTRODUCCIÓN
La idea es crear un panel que nos ayude a modificar el fondo del documento FLA, pero [...]]]></description>
			<content:encoded><![CDATA[<p>Bienvenidos, en esta ocasión retomaremos el tema de los <strong><a title="Tutorial JSFL - Introducción a Paneles" href="http://www.nomeva.com/2009/04/24/tutorial-jsfl-introduccion-a-paneles/" target="_blank">Paneles</a></strong> pero enfocado a su creación mediante <strong><a title="Adobe Flex" href="http://www.adobe.com/es/products/flex/" target="_blank">Adobe Flex</a></strong>.</p>
<blockquote><p>Antes o después de leer este tutorial sería interesante leer el <strong><a title="Tutorial JSFL - Introducción a Paneles" href="http://www.nomeva.com/2009/04/24/tutorial-jsfl-introduccion-a-paneles/" target="_blank">este</a></strong> otro post sobre la introducción a la creación de <strong>Paneles</strong>.</p></blockquote>
<h1>INTRODUCCIÓN</h1>
<p>La idea es crear un panel que nos ayude a modificar el <strong>fondo</strong> del documento <strong>FLA</strong>, pero más rápidamente, si, sé que cambiar el fondo del documento es muy fácil, pero soy un poco maniático y la verdad tener que abrir una ventana, seleccionar un color y luego dar click en aceptar son muchos pasos, me gustaría algo mucho más rápido, algo como hacer <strong>rollOver</strong> sobre un componente <a title="ColorPicker Flex 3" href="http://livedocs.adobe.com/flex/3/langref/mx/controls/ColorPicker.html"><strong>ColorPicker</strong></a> y listo.</p>
<h1>DESARROLLO</h1>
<p>Para ejecutar código <a title="JSFL en nomeva.com" href="http://www.nomeva.com/category/jsfl/" target="_blank"><strong>JSFL</strong></a> en una película <strong>swf</strong> generada con <strong>Flex</strong> utilizaremos el método <a title="Método MMExecute" href="http://help.adobe.com/en_US/AS3LCR/Flash_10.0/adobe/utils/package.html#MMExecute()" target="_blank"><strong>MMExecute</strong></a> que encontramos en el paquete <em>adobe.utils </em>por ejemplo:</p>
<pre>import adobe.utils.MMExecute;
MMExecute("jsfl code");</pre>
<blockquote><p>El método <a title="Método MMExecute" href="http://help.adobe.com/en_US/AS3LCR/Flash_10.0/adobe/utils/package.html#MMExecute()" target="_blank"><strong>MMExecute</strong></a> recibe un parámetro de tipo <strong>String</strong> en el cual indicaremos el código <a title="JSFL en nomeva.com" href="http://www.nomeva.com/category/jsfl/" target="_blank"><strong>JSFL</strong></a> que deseamos ejecutar. Además devuelve un valor también de tipo <strong>String</strong> que es la representación en cadena del resultado de la ejecución del código.</p></blockquote>
<h2>Parte JSFL</h2>
<p>Vale, ahora que sabemos como ejecutar código <a title="JSFL en nomeva.com" href="http://www.nomeva.com/category/jsfl/" target="_blank"><strong>JSFL</strong></a> necesitamos saber que código ejecutar. Lo que queremos modificar es una propiedad del <strong>documento FLA</strong>, así es que antes que otra cosa debemos obtener una referencia al documento, esto lo hacemos con el siguiente código:</p>
<pre class="brush:js">var oDoc = fl.getDocumentDOM();</pre>
<p>Y para acceder y modificar el color de fondo utilizamos la propiedad <strong>backgroundColor</strong> que es de lectura y escritura:</p>
<pre class="brush:js">oDoc.backgroundColor</pre>
<p>Listo, por lo menos la parte de JSFL, ahora tenemos que integrar este código en una aplicación <strong>Flex</strong>.</p>
<h2 style="font-size: 1.5em;">Parte FLEX</h2>
<p>Utilizaremos un componente <strong><a title="ColorPicker Flex 3" href="http://livedocs.adobe.com/flex/3/langref/mx/controls/ColorPicker.html">ColorPicker</a></strong> este componente entre otras cosas emite los eventos:</p>
<ul>
<li>change</li>
<li>close</li>
<li>itemRollOver</li>
<li>itemRollOut</li>
<li>open</li>
</ul>
<p>Los que en nuestro caso nos interesan son los eventos <strong>change</strong> e <strong>itemRollOver</strong> así que como en cualquier otra aplicación utilizamos el siguiente código:</p>
<pre class="brush:xml">&lt;mx:ColorPicker id="cpBackgroundColor" x="89" y="10" change="onChange(event);" itemRollOver="onItemRollOver(event);" /&gt;</pre>
<p>Ahora simplemente en los métodos <strong>onChange</strong> y <strong>onItemRollOver</strong> es donde tendremos que utilizar el método MMExecute de la siguiente manera:</p>
<pre class="brush:as3">import mx.events.ColorPickerEvent;
import adobe.utils.MMExecute;

private function onChange(_oEvent:ColorPickerEvent):void
{
    if (this.isDocumentExists())
        MMExecute("fl.getDocumentDOM().backgroundColor = Number(" + _oEvent.color + ");");
}

private function onItemRollOver(_oEvent:ColorPickerEvent):void
{
    if (this.isDocumentExists())
        MMExecute("fl.getDocumentDOM().backgroundColor = Number(" + _oEvent.color + ");");
}

private function isDocumentExists():Boolean
{
    var ret:Boolean = false;
    if (MMExecute("fl.getDocumentDOM();") != "null")
        ret = true;

    return ret;
}</pre>
<h1>INSTALACIÓN</h1>
<p>Listo, el resultado no lo podremos ver en ejecución a menos que llevemos el <strong>swf</strong> resultante a la carpeta de <strong>Paneles</strong> de Flash, es decir al directorio <strong>WindowSWF</strong> dentro del directorio <strong>Configuration</strong> de la instalación.</p>
<p>Según el sistema operativo:</p>
<p><strong>Windows® VistaTM:</strong></p>
<ul>
<li>unidad de arranque\Users\nombre de usuario\Local Settings\Application Data\Adobe\Flash</li>
</ul>
<p>CS4\idioma\Configuration\</p>
<p><strong>Windows XP:</strong></p>
<ul>
<li>unidad de arranque\Documents and Settings\nombre de usuario\Local Settings\Application Data\Adobe\Flash CS4\idioma\Configuration\</li>
</ul>
<p><strong>Mac OS® X:</strong></p>
<ul>
<li>Macintosh HD/Usuarios/nombre de usuario/Librería/Application Support/Adobe/Flash</li>
</ul>
<p>CS4/idioma/Configuration/</p>
<h1>EJECUCIÓN</h1>
<p>Para ejecutar el <strong>Panel</strong> debemos acceder al menú <em><strong>Ventana -&gt; Otros paneles -&gt; Change Background Color </strong></em>a continuación un ejemplo de como ejecutar y su funcionamiento:</p>
<p><a title="Ejemplo ejecución de Panel Change Background Color." href="http://img194.yfrog.com/i/s9y.mp4/" target="_blank"><strong>Ver ejemplo</strong></a></p>
<h1>DESCARGAS</h1>
<p>Como es habitual a continuación podéis descargar los fuentes y el instalador del Panel:</p>
<ul>
<li>Fichero <strong><a title="Fichero MXML del Panel" href="http://www.nomeva.com/wp-content/uploads/2009/11/PanelChangeColor.mxml" target="_blank">MXML</a></strong> de Flex por si te interesa ver el código.</li>
<li>Fichero <strong><a title="Fichero SWF del Panel" href="http://www.nomeva.com/wp-content/uploads/2009/11/Change-Background-Color.swf" target="_blank">SWF</a><span style="font-weight: normal;"> del Panel para instalar manualmente el Panel</span></strong>.</li>
<li>Instalador <strong><a title="Instalador de la Extensión, fichero MXP" href="http://www.nomeva.com/wp-content/uploads/2009/11/PanelChangeColor.mxp" target="_blank">MXP</a></strong> del Panel para instalar automáticamente la extensión.</li>
</ul>
<p>Saludos, cualquier duda o comentario será bienvenido.</p>
<h3>Entradas relacionadas</h3>
<ul>
<li><a title="Recursos JSFL en nomeva.com" href="../category/2008/08/24/recursos-jsfl/" target="_blank">Recursos JSFL</a></li>
<li><a title="Tutorial JSFL - Introducción a comandos" href="../category/2008/09/26/tutorial-jsfl-introduccion-a-comando/" target="_blank">Tutorial JSFL – Introducción a comandos</a></li>
<li><a title="Tutorial JSFL - Comandos con interfaz gráfica" href="../category/2008/10/12/tutorial-jsfl-comandos-con-interfaz-grafica/" target="_blank">Tutorial JSFL – Comandos con interfaz gráfica</a></li>
<li><a title="Tutorial JSFL - Comandos con interfaz gráfica II" href="../category/2008/11/09/tutorial-jsfl-comandos-con-interfaz-grafica-ii/" target="_blank">Tutorial JSFL – Comandos con interfaz gráfica II</a></li>
<li><a title="Tutorial JSFL - Introducción a Paneles" href="../category/2009/04/24/tutorial-jsfl-introduccion-a-paneles/" target="_blank"><strong>Tutorial JSFL – Introducción a Paneles</strong></a></li>
<li><a title="Tutorial JSFL - Panel Auto Save" href="../category/2009/06/28/tutorial-jsfl-panel-auto-save/" target="_blank"><strong>Tutorial JSFL – Panel Auto Save</strong></a></li>
<li><a title="Tutorial JSFL - Guardar copia FLA 1/2 (comando)" href="../category/2009/07/05/tutorial-jsfl-guardar-copia-fla-12-comando/" target="_blank">Tutorial JSFL – Guardar copia FLA 1/2 (comando)</a></li>
<li><a title="Tutorial JSFL - Introducción a herramientas (tools)" href="../2009/07/17/tutorial-jsfl-introduccion-herramientas-tools/" target="_blank">Tutorial JSFL – Introducción a herramientas (tools)</a></li>
<li><a title="Tutorial JSFL - Localización de contenidos (comando)" href="http://www.nomeva.com/2009/11/11/tutorial-jsfl-localizacion-de-contenidos-comando/" target="_blank">Tutorial JSFL &#8211; Localización de contenidos (comando)</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.nomeva.com/2009/11/19/tutorial-jsfl-mmexecute-creacion-panel-con-flex/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Tutorial JSFL &#8211; Introducción a Paneles</title>
		<link>http://www.nomeva.com/2009/04/24/tutorial-jsfl-introduccion-a-paneles/</link>
		<comments>http://www.nomeva.com/2009/04/24/tutorial-jsfl-introduccion-a-paneles/#comments</comments>
		<pubDate>Fri, 24 Apr 2009 15:05:02 +0000</pubDate>
		<dc:creator>Luis Adrián</dc:creator>
				<category><![CDATA[Flash]]></category>
		<category><![CDATA[JSFL]]></category>
		<category><![CDATA[Paneles]]></category>
		<category><![CDATA[Tutoriales]]></category>
		<category><![CDATA[MMExecute]]></category>

		<guid isPermaLink="false">http://www.nomeva.com/?p=303</guid>
		<description><![CDATA[
Esta es la tercera entrega de los tutoriales sobre JSFL que en su momento me propuse escribir, con ésta cerraré el paquete de introducción, pero no todo termina aquí, pues han cambiado mucho las cosas desde que empecé a escribir, he aprendido nuevas cosas, me he tenido que enfrentar a nuevos retos y tengo nuevas [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: center;"><img class=" aligncenter" title="Tablero" src="http://www.nomeva.com/imagenes/tablero_ajedrez.jpg" alt="Tablero" width="420" height="263" /></p>
<p>Esta es la tercera entrega de los<a title="Tutoriales en nomeva.com" href="http://www.nomeva.com/category/tutoriales/" target="_blank"> tutoriales</a> sobre <a title="JSFL en nomeva.com" href="http://www.nomeva.com/category/jsfl/" target="_blank">JSFL</a> que en su momento me propuse escribir, con ésta cerraré el paquete de introducción, pero no todo termina aquí, pues han cambiado mucho las cosas desde que empecé a escribir, he aprendido nuevas cosas, me he tenido que enfrentar a nuevos retos y tengo nuevas ideas sobre que escribir y como aplicar estos conocimientos a situaciones reales para ayudarnos en nuestro día a día. Bueno, sin más preámbulos vamos a lo que nos compete.</p>
<p>En esta ocasión veremos los <strong>Paneles</strong>, los paneles son películas SWF que almacenamos en las siguientes rutas respectivamente en función del sistema operativo:</p>
<ul>
<li>Windows® VistaTM:</li>
</ul>
<p>unidad de arranque\Users\nombre de usuario\Local Settings\Application Data\Adobe\Flash CS4\idioma\Configuration\<strong>WindowSWF</strong></p>
<ul>
<li>Windows XP:</li>
</ul>
<p>unidad de arranque\Documents and Settings\nombre de usuario\Local Settings\Application Data\Adobe\Flash CS4\idioma\Configuration\<strong>WindowSWF</strong></p>
<ul>
<li>Mac OS® X:</li>
</ul>
<p>Macintosh HD/Usuarios/nombre de usuario/Librería/Application Support/Adobe/Flash CS4/idioma/Configuration/<strong>WindowSWF </strong></p>
<p>El acceso a estos paneles lo hacemos a través del menú <strong>Ventana -&gt; Otros</strong> <strong>paneles</strong>, aquí encontraremos todos los <strong>Paneles</strong> que creemos dentro del directorio <strong>WindowSWF</strong>.</p>
<address>¿Para que sirven los paneles? y ¿Qué podemos hacer con un panel?</address>
<p>Bueno, básicamente podemos hacer todo lo que hacen los <a title="Tutorial JSFL - Introducción a Comandos" href="http://www.nomeva.com/2008/09/26/tutorial-jsfl-introduccion-a-comando/" target="_blank">comandos</a>, pero con la ventaja de tenerlo siempre abierto.</p>
<address>¿Y eso que quiere decir?</address>
<p>Pues que por ejemplo para ejecutar un comando tenemos que hacerlo a través del menú <strong>Comandos</strong>, con lo cual perdemos el área de trabajo, esto si utilizamos un comando basado en interfaz gráfica, pero si lo hacemos con un comando sencillo no tenemos forma de configurar parámetros con lo que perdemos más valor. Sin embargo con un <strong>Panel</strong> tenemos siempre visible el área de trabajo, tenemos acceso a toda la configuración que deseemos implementar en el panel y además podemos crear previews del resultado puesto que el panel es una película <strong>swf</strong> en la que podemos hacer tanto como deseemos.</p>
<address>A ver, a ver, ¿dices que los <strong>Paneles</strong> son películas <strong>SWF</strong>?</address>
<p>Así es, esta es la parte más poderosa de los <strong>Paneles</strong>, que son películas <strong>SWF</strong>, con lo cual las podemos crear con lo que más cómodos nos sintamos, por ejemplo con <strong>Flex</strong>, con <strong>Flash</strong>, con <strong>mtasc</strong>, todos estos los he probado y funcionan perfectamente, seguro que también se puede con <strong>HAXE</strong> aunque no lo he probado.</p>
<address>¿Y donde está el truco?</address>
<p>Bueno, realmente no es truco, pero bueno la magia que nos permite hacer esto es una función muy sencilla que lleva mucho tiempo ahí y que es más potente de lo que ha simple vista parece, la función que nos permite utilizar a nuestros queridos <strong>SWF&#8217;s</strong> como interfaz de los <strong>Paneles</strong> es la función <strong>MMExecute</strong>, a ésta función le tenemos que pasar como parámetro código JSFL y listo.</p>
<blockquote><p><strong>NOTA</strong> del escritor, osea yo, jejejeje<br />
Una buena práctica es el encapsulamiento y además conseguir que nuestro <strong>Panel</strong> tenga poco acoplamiento. Esto es más sencillo de lo que suena, simplemente quiere decir que separemos el código AS y el código JSFL.</p></blockquote>
<h2>PARTE ActionScript, lógica de la vista del Panel</h2>
<p>Bueno y ahora si por fin después de esta introducción ya podemos hablar sobre la forma en la que vamos a poner en práctica lo aprendido (pero que dice este tío, si lo único que hemos visto es la función MMExecute y una ruta rara) . Vamos a crear un Panel que nos ayude a crear tableros de ajedrez, si esos bellos tableros que se componen de 64 casillas, 8 filas y 8 columnas, alternando dos tipos de casillas.</p>
<p>Recuerdo que hace tiempo tomé un taller sobre ActionScript avanzado en el <a title="Flash For México" href="http://www.flashformexico.org/" target="_blank">Flash For México 2004</a> que impartió <a title="Fernando Flores" href="http://funciton.com/" target="_blank">Fernando Flores</a>, ahí antes de empezar a picar código nos dijo una cosa que siempre recordaré y que sigo aplicando a diario en mis proyectos, la lista de la compra, o sea lo que queremos, lo que necesitamos de nuestra aplicación. En este caso que es lo que queremos que tenga este <strong>Panel</strong>, bueno, pues mi lista de la compra para este Panel es la siguiente:</p>
<ul>
<li>Definir el tamaño de las casillas.</li>
<li>Definir el color de las casillas.</li>
<li>Tener un preview antes de crearlo.</li>
</ul>
<p>Esta lista de la compra nos ayuda a saber que necesitaremos 2 instancias del Componente <strong>ColorPicker</strong>, una instancia del Componente <strong>NumericStepper</strong> y para ejecutar acciones el buen amigo<strong> Button</strong>. Con ellos tendremos la lógica de AS que nos ayudará a conseguir los valores necesarios para crear nuestro tablero.</p>
<p>Una vez que conseguimos los valores necesario hacemos la llamada al fichero JSFL encargado de crear el tablero, la llamada a este fichero es realmente la clave de éste <strong>Panel</strong>. El código es el siguiente:</p>
<pre lang="javascript">MMExecute('fl.runScript( fl.configURI + "WindowSWF/JavaScript/Tablero.jsfl", "createBoard", ' + this.comColor1.selectedColor + ', ' + this.comColor2.selectedColor + ', ' + this.comNumericStepperSize.value + ' );');</pre>
<p>La explicación de ese trozo de código es la siguiente:</p>
<p><strong>MMExecute</strong>, esta función recibe como parámetro el código JSFL que deseamos ejecutar.</p>
<p><strong>fl.runScript</strong>, esté método de sirve para ejecutar scripts con código JSFL. Recibe un parámetro obligatorio y dos opcionales, que en nuestro caso utilizamos.</p>
<ul>
<li>El primero es la ruta del fichero JSFL que se desea ejecutar.</li>
<li>El segundo es el nombre de la función que se desea ejecutar dentro del fichero JSFL.</li>
<li>El tercero son los parámetros que enviamos a la función.</li>
</ul>
<p><strong>fl.configURI</strong>, esta propiedad nos devuelve la ruta de la carpeta configuration de Flash del equipo.</p>
<p>Hasta ahora lo único que hemos hecha ha sido simplemente llamar a un fichero JSFL alojado en la carpeta configuration/WindowSWF/JavaScript/<strong>Tablero.jsfl</strong>, hemos indicado que deseamos ejecutar la función <strong>createBoard</strong> dentro de este fichero y le hemos pasado los parámetros necesarios (<strong>Color1</strong>, <strong>Color2</strong> y <strong>Tamaño</strong>).</p>
<p>Y ya está, nuestro <strong>Panel</strong> es así de simple, podemos hacer todo lo que nos venga en gana para hacerlo más bonito, con animaciones, diseños y demás, pero lo mínimo necesario para funcionar es lo que hemos hecho hasta ahora. Bueno, ahora si empieza la parte interesante que es la que desde el principio quiero explicar, lo que es realmente código JSFL y es el encargado de crear el tablero de Ajedrez. ¿Preparados? &#8230; Pues vamos allá.</p>
<p>Pero antes una imagen que como queda nuestra interfaz:</p>
<p style="text-align: center;"><img class=" aligncenter" title="Panel Tablero" src="http://www.nomeva.com/imagenes/panel_tablero.png" alt="Panel Tablero" width="278" height="358" /></p>
<h2>PARTE JSFL, lógica de &#8230; algo que no es la vista del Panel</h2>
<p>Llegamos a este punto con una parte muy importante ya definida y es la función a la que se llama desde ActionScript con la función <strong>MMExecute</strong>, si, así es, me refiero a la función <strong>createBoard</strong>, pero no sólo sabemos que tenemos que crear esa función, también sabemos que recibe <strong>tres parámetros</strong>, con lo cual ya nos hacemos a la idea de algunas tareas que tendremos que hacer. Pero bueno, vamos a pensarlo un poco más para ver que elementos necesitaremos, teniendo en cuenta que el tablero sea fácil de usar y modificar.<br />
Bueno, pues partiendo de estas premisas y pensando lo más fácil posible, planteo la creación de tres <strong>MovieClip&#8217;s</strong>.</p>
<ol>
<li><strong>Caja 1</strong>, que será un cuadrado de las dimensiones  y el color indicados por parámetro.</li>
<li><strong>Caja 2</strong>, que es lo mismo que la caja 1 pero con el otro color.</li>
<li><strong>Tablero</strong>, éste tendrá 32 instancias de cada Caja para formar el tablero.</li>
</ol>
<p>Bueno, ahora si con las cosas claras es más fácil programar, entonces vamos por partes, hemos dicho que necesitamos crear MovieClip&#8217;s, esto es muy sencillo, para hacerlo necesitamos utilizar el método <strong>addNewItem</strong> del Objeto<strong> library</strong>, éste método recibe dos parámetros, el tipo de Item y el nombre del mismo. A continuación un ejemplo:</p>
<pre lang="javascript">fl.getDocumentDOM().library.addNewItem("movie clip", "nombre del MovieClip");</pre>
<p>Luego necesitamos editar el MovieClip creado en el paso anterior, esto lo hacemos con el método <strong>editItem</strong> del Objeto <strong>library</strong>, éste método recibe como parámetro el nombre del Item que deseamos editar. A continuación un ejemplo:</p>
<pre lang="javascript">fl.getDocumentDOM().library.editItem("nombre del MovieClip");</pre>
<p>Ahora dentro del MovieClip antes de dibujar el cuadro debemos definir el color, esto lo hacemos con el método <strong>setCustomFill</strong> del Objeto <strong>Document</strong>, éste método recibe un objeto como parámetro, donde indicamos el color y el estilo de relleno. A continuación un ejemplo:</p>
<pre lang="javascript">fl.getDocumentDOM().setCustomFill( {color:_nColor, style:"solid"} );</pre>
<p>Una vez que hemos definido el color del cuadro ya podemos dibujarlo, esto lo hacemos con el método <strong>addNewRectangle</strong> del Objeto <strong>Document</strong>, éste método recibe dos parámetros, un objeto con la posición y las dimensiones del rectángulo que crearemos y el factor de redondeo de las esquinas del mismo. A continuación un ejemplo:</p>
<pre lang="javascript">fl.getDocumentDOM().addNewRectangle( { left:0, top:0, right:Tamaño, bottom:Tamaño }, 0);</pre>
<p>Listo, con estos pasos hemos conseguido crear un MovieClip, editarlo, definir un color de relleno y dibujar un cuadro, ahora simplemente tenemos que salir del modo edición de éste MovieClip, esto lo hacemos con el método <strong>exitEditMode</strong> del Objeto <strong>Document</strong>. A continuación un ejemplo:</p>
<pre lang="javascript">fl.getDocumentDOM().exitEditMode();</pre>
<p>Repetimos estos pasos y conseguiremos crear el segundo cuadro.</p>
<blockquote><p><strong>NOTA</strong><br />
Una buena práctica es encapsular estos pasos en una función para reutilizarla en más ocasiones.</p></blockquote>
<p>Bueno, con esto ya tenemos dos MovieClip&#8217;s en la biblioteca, del tamaño y color deseados, ahora nos queda montar el tablero. Para esto necesitaremos crear otro MovieClip e instanciar 64 Items de la biblioteca, 32 de un color y 32 de otro. Esto lo conseguiremos con el siguiente código,:</p>
<pre lang="javascript">fl.getDocumentDOM().library.addNewItem("movie clip", "tablero");
fl.getDocumentDOM().library.editItem("tablero");
var n = 0;
for (var i = 1; i &lt;= 8; i++)
{
    for (var j = 1; j &lt;= 8; j++)
    {
        var sItemName = (n % 2 == 0) ? "casilla1" : "casilla2";
        fl.getDocumentDOM().library.addItemToDocument({x:(j - 1) * _nSize, y:(i - 1) * _nSize}, sItemName);
        n++;
    }
    n++;
}
fl.getDocumentDOM().exitEditMode();</pre>
<p>De ese código la parte nueva que vemos de JSFL es el método <strong>addItemToDocument</strong>, del Objeto <strong>library</strong>, éste método nos permite instanciar elementos de la <strong>biblioteca</strong> en el <strong>escenario</strong>, recibe dos parámetros, el primero es un objeto con las coordenadas X e Y en las que deseamos instanciar el Item y el segundo es una cadena con el nombre del Item que deseamos instanciar.</p>
<p>Y listo, eso ha sido todo, quizá contado trozo a trozo no tenga mucho sentido, pero mi intención era explicar cada uno de los método utilizados. A continuación pongo el código JSFL completo://Declaración de variables</p>
<pre lang="javascript">var oDoc;
var oLib;
var sBoxName1 = "box_1";
var sBoxName2 = "box_2";
var sBoardName = "board";

/**
* @method	createBoard
* Método encargado de crear un tablero.
* @param	_nColor1	Number		Número que indica el color primario del tablero
* @param	_nColor2	Number		Número que indica el color secundario del tablero
* @param	_nSize		Number		Número que indica el tamaño de las casillas
* @return	Void
*/
function createBoard(_nColor1, _nColor2, _nSize)
{
    if (this.config())
    {
        //Lamada al método createBox para crear MovieClp's
        this.createBox(this.sBoxName1, _nSize, _nColor1);
        this.createBox(this.sBoxName2, _nSize, _nColor2);

        //Hacemos una comprobación, si existen el item en la biblioteca lo eliminamos.
        if (this.oLib.itemExists(this.sBoardName))	this.oLib.deleteItem(this.sBoardName);

        //Creamos y editamos el MovieClip tablero
        this.oLib.addNewItem("movie clip", this.sBoardName);
        this.oLib.editItem(this.sBoardName);
        var n = 0;
        for (var i = 1; i &lt;= 8; i++)
        {
            for (var j = 1; j &lt;= 8; j++)
            {
                var sItemName = (n % 2 == 0) ? this.sBoxName1 : this.sBoxName2;
                //Añadimos al MovieClip una instancia de la casilla en su posición correspondiente
                this.oLib.addItemToDocument({x:(j - 1) * _nSize, y:(i - 1) * _nSize}, sItemName);
                n++;
            }
            n++;
        }

        //Salimos del modo de edición y volvemos al escenario
        this.oDoc.exitEditMode();
    }
}

/**
* @method	createBox
* Método encargado de crear un Item de tipo MovieClip en la biblioteca, editarlo y dentro crear un cuadro de tamaño y color indicados por parámetro.
* @param	_sName		String		Cadena que indica el nombre del Item que se creará en la biblioteca.
* @param	_nSize		Number		Número que indica el tamaño del cuadro que se creará.
* @param	_nColor		Number		Número que indica el color del cuadro que se creará.
* @return	Void
*/
function createBox(_sName, _nSize, _nColor)
{
    //Hacemos una comprobación, si existen el item en la biblioteca lo eliminamos.
    if (this.oLib.itemExists(_sName))	this.oLib.deleteItem(_sName);

    //Añadimos y editamos el MovieClip
    this.oLib.addNewItem("movie clip", _sName);
    this.oLib.editItem(_sName);
    //Definimos el color y estilo del trazo
    this.oDoc.setCustomStroke( {color:"#000000", thickness:1} );
    //Definimos el color y estilo de relleno del cuadro
    this.oDoc.setCustomFill( {color:_nColor, style:"solid"} );
    //Dibujamos el cuadro
    this.oDoc.addNewRectangle( { left:0, top:0, right:_nSize, bottom:_nSize }, 0);
    //Salimos del modo de edición y volvemos al escenario
    this.oDoc.exitEditMode();
}

/**
* @method	config
* Método encargado de la configuración del JSFL
* @return	Void
*/
function config()
{
    fl.showIdleMessage(false);
    fl.outputPanel.clear();

    var ret = false;

    if(fl.getDocumentDOM())
    {
        //Obtenemos y configuramos las referencias al Documento y a la Biblioteca
        this.oDoc = fl.getDocumentDOM();
        this.oLib = this.oDoc.library;
        ret = true;
    }
    else
    {
        alert("Debes tener un documento abierto.");
    }

    return ret;
}</pre>
<p><a title="Archivos del Tutorial" href="http://www.nomeva.com/tutoriales/jsfl/panel_tablero.zip" target="_blank">Aquí</a> se pueden descargar los ficheros de este tutorial. Cualquier, duda, sugerencia o comentario, aquí estaré.</p>
<p>Entradas relacionadas:</p>
<ul>
<li><a title="Recursos JSFL en nomeva.com" href="http://www.nomeva.com/2008/08/24/recursos-jsfl/" target="_blank">Recursos JSFL</a></li>
<li><a title="Tutorial JSFL - Introducción a comandos" href="http://www.nomeva.com/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="http://www.nomeva.com/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="http://www.nomeva.com/2008/11/09/tutorial-jsfl-comandos-con-interfaz-grafica-ii/" target="_blank">Tutorial JSFL &#8211; Comandos con interfaz gráfica II</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.nomeva.com/2009/04/24/tutorial-jsfl-introduccion-a-paneles/feed/</wfw:commentRss>
		<slash:comments>9</slash:comments>
		</item>
	</channel>
</rss>
