<?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; extension</title>
	<atom:link href="http://www.nomeva.com/tag/extension/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; 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 [...]]]></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 herramientas (tools)</title>
		<link>http://www.nomeva.com/2009/07/17/tutorial-jsfl-introduccion-herramientas-tools/</link>
		<comments>http://www.nomeva.com/2009/07/17/tutorial-jsfl-introduccion-herramientas-tools/#comments</comments>
		<pubDate>Fri, 17 Jul 2009 15:09:38 +0000</pubDate>
		<dc:creator>Luis Adrián</dc:creator>
				<category><![CDATA[Flash]]></category>
		<category><![CDATA[JSFL]]></category>
		<category><![CDATA[Tutoriales]]></category>
		<category><![CDATA[extension]]></category>
		<category><![CDATA[herramienta]]></category>
		<category><![CDATA[mxp]]></category>
		<category><![CDATA[tablas]]></category>
		<category><![CDATA[tables]]></category>
		<category><![CDATA[tool]]></category>

		<guid isPermaLink="false">http://www.nomeva.com/?p=389</guid>
		<description><![CDATA[Este es un post que tenía pendiente desde hace tiempo, en esta ocasión voy a hablar sobre las herramientas (tools) de Flash y de como personalizarlas o como es nuestro caso crear una nueva herramienta con JSFL. INTRODUCCIÓN Recuerdo en los tiempos de Flash 4 que fué cuando empecé con Flash que por comodidad y [...]]]></description>
			<content:encoded><![CDATA[<p><img class="aligncenter size-full wp-image-390" title="lego briks" src="http://www.nomeva.com/wp-content/uploads/2009/07/lego_briks.jpg" alt="lego briks" width="290" height="190" /></p>
<p>Este es un post que tenía pendiente desde hace tiempo, en esta ocasión voy a hablar sobre las <strong>herramientas</strong> (tools) de <strong>Flash</strong> y de como personalizarlas o como es nuestro caso crear una nueva herramienta con <strong>JSFL</strong>.</p>
<h1>INTRODUCCIÓN</h1>
<p>Recuerdo en los tiempos de <strong>Flash 4</strong> que fué cuando empecé con <strong>Flash</strong> que por comodidad y sobre todo por desconocimiento de la aplicación, quería hacer <strong>tablas</strong> en <strong>Flash</strong> y por mucho que busqué no encontré una herramienta que me sirviera para esto, así que al final aprendí a utilizar las <strong>herramientas de dibujo</strong> y a través de cuadros y líneas con las herramientas <strong>rectángulo</strong> y <strong>trazo</strong> conseguí hacer las tablas que quería, luego con el tiempo descubrí el panel alineación y distribución y con eso perfeccioné la tarea y me fué más fácil hacer estas tablas.</p>
<p>Bueno, pues la idea es que vamos a crear una herramienta para crear tablas de una manera fácil como si de rectángulos se tratara.</p>
<h1>DESARROLLO</h1>
<p><strong>JSFL</strong> nos permite extender la funcionalidad de la aplicación, como <a title="JSFL en nomeva.com" href="http://www.nomeva.com/category/jsfl/" target="_blank"><strong>hemos hablado</strong></a> ya en otras ocasiones, lo podemos hacer <strong>con </strong><a title="Tutorial JSFL - Introducción a comandos" href="http://www.nomeva.com/2008/09/26/tutorial-jsfl-introduccion-a-comando/" target="_blank"><strong>comandos</strong></a> y <a title="Tutorial JSFL - Introducción a paneles" href="http://www.nomeva.com/2009/04/24/tutorial-jsfl-introduccion-a-paneles/" target="_blank"><strong>paneles</strong></a>, pero también existe otro modo de extender y automatizar procesos, me refiero a la creación de herramientas.</p>
<p>Las herramientas al igual que los comandos y paneles se programan con <strong><a title="JSFL en nomeva.com" href="http://www.nomeva.com/category/jsfl/" target="_blank">JSFL</a> </strong>y se almacenan en las siguiente rutas respectivamente por sistema operativo:</p>
<ul>
<li><strong>Windows Vista</strong></li>
</ul>
<p><em>unidad de arranque</em>\Users\<em>nombre de usuario</em>\Local Settings\Application Data\Adobe\Flash<br />
<strong></strong></p>
<p>CS4\<em>idioma</em>\Configuration\Tools<span> </span></p>
<ul>
<li><strong>Windows XP</strong></li>
</ul>
<p><em>unidad de arranque</em>\Documents and Settings\<em>usuario</em>\Local Settings\Application Data\Adobe\Flash<br />
<strong></strong></p>
<p>CS4\<em>idioma</em>\Configuration\Tools<span> </span></p>
<ul>
<li><strong>Mac OS X</strong></li>
</ul>
<p>Macintosh HD/Usuarios/<em>nombre de usuario</em>/Librería/Application Support/Adobe/Flash</p>
<p><strong></strong></p>
<p>CS4/<em>idioma</em>/Configuration/Tools</p>
<p>A diferencia de los comandos y los paneles en las herramientas tenemos acceso a funciones y métodos de nivel superior que nos ayudan a desarrollar y controlar el estado de nuestra herramienta, las funciones disponibles son las siguiente:</p>
<ul>
<li> activate()</li>
<li> configureTool()</li>
<li> deactivate()</li>
<li> keyDown()</li>
<li> keyUp()</li>
<li> mouseDoubleClick()</li>
<li> mouseDown()</li>
<li> mouseMove()</li>
<li> mouseUp()</li>
<li> notifySettingsChanged()</li>
<li> setCursor()<span> </span></li>
</ul>
<p>Las que utilizaremos para la creación de la herramienta <strong>tablas</strong> serán, <strong><a title="Función activate" href="http://help.adobe.com/es_ES/Flash/10.0_ExtendingFlash/WS5b3ccc516d4fbf351e63e3d118a9024f3f-7765.html" target="_blank">activate</a></strong> que se dispara cuando la herramienta es seleccionada por el usuario, <strong><a title="Función deactivate" href="http://help.adobe.com/es_ES/Flash/10.0_ExtendingFlash/WS5b3ccc516d4fbf351e63e3d118a9024f3f-7760.html" target="_blank">deactivate</a></strong> que se dispara cuando el usuario cambia a otra herramienta, <strong><a title="Función notifySettingsChanged" href="http://help.adobe.com/es_ES/Flash/10.0_ExtendingFlash/WS5b3ccc516d4fbf351e63e3d118a9024f3f-7758.html" target="_blank">notifySettingsChanged</a></strong> que se dispara cuando el usuario modifica las propiedades de nuestra herramienta, <strong><a title="Función mouseDown" href="http://help.adobe.com/es_ES/Flash/10.0_ExtendingFlash/WS5b3ccc516d4fbf351e63e3d118a9024f3f-775b.html" target="_blank">mouseDown</a></strong>, <strong><a title="Función mouseMove" href="http://help.adobe.com/es_ES/Flash/10.0_ExtendingFlash/WS5b3ccc516d4fbf351e63e3d118a9024f3f-775a.html" target="_blank">mouseMove </a></strong>y <strong><a title="Función mouseUp" href="http://help.adobe.com/es_ES/Flash/10.0_ExtendingFlash/WS5b3ccc516d4fbf351e63e3d118a9024f3f-7759.html" target="_blank">mouseUp</a></strong> que se disparan cuando el usuario hace lo que el nombre de la función dice <img src='http://www.nomeva.com/wp-includes/images/smilies/icon_biggrin.gif' alt=':D' class='wp-smiley' /> . Esto con respecto a los <strong>eventos</strong> para controlar nuestra herramienta.</p>
<h3>Pero ¿cómo accedemos a la herramienta?</h3>
<p>Pues fácil, como todo en JSFL son objetos necesitamos obtener la referencia a la herramienta activa que será nuestra herramienta, esto lo hacemos con la propiedad <strong><a title="Propiedad activeTool" href="http://help.adobe.com/es_ES/Flash/10.0_ExtendingFlash/WS5b3ccc516d4fbf351e63e3d118a9024f3f-7f18.html" target="_blank">activeTool</a></strong> del objeto <strong><a title="Objeto Tools" href="http://help.adobe.com/es_ES/Flash/10.0_ExtendingFlash/WS5b3ccc516d4fbf351e63e3d118a9024f3f-7fec.html" target="_blank">tools</a></strong>, en el ejemplo siguiente se muestra como obtener una referencia a la herramienta.</p>
<pre lang="javascript">theTool = fl.tools.activeTool;</pre>
<h3>Guay, ¿Y para qué quiero tener una referencia al objeto herramienta?</h3>
<p>Pues para asignar a nuestra herramienta nombre, tooltip, icono, opciones, especificar el tipo para el inspector de propiedades por ejemplo y muchas más cosas. Como se muestra a continuación.</p>
<pre lang="javascript">// Set the standard tool information
theTool = fl.tools.activeTool;
theTool.setToolName("Tablas");
theTool.setIcon("Tablas.png");
theTool.setMenuString("Herramienta Tablas");
theTool.setToolTip("Herramienta Tablas");
theTool.setOptionsFile("Tablas.xml");

// This tool uses the Shape property inspector
theTool.setPI( "shape" );</pre>
<h3>Vale, vale, ya me entero, pero ¿Cómo dibujo?</h3>
<p>Ah, muy cierto, pues para pintar / dibujar debemos hacer una nota importante y es que tenemos dos momento de dibujo:</p>
<ul>
<li>El momento de la previsualización</li>
<li>El momento del dibujo final</li>
</ul>
<p>Para el momento de la pre-visualización utilizaremos el objeto <a title="Objeto drawingLayer" href="http://help.adobe.com/es_ES/Flash/10.0_ExtendingFlash/WS5b3ccc516d4fbf351e63e3d118a9024f3f-7ff6.html" target="_blank"><strong>drawingLayer</strong></a> y sus métodos <strong><a title="Método moveTo del objeto drawingLayer" href="http://help.adobe.com/es_ES/Flash/10.0_ExtendingFlash/WS5b3ccc516d4fbf351e63e3d118a9024f3f-7c61.html" target="_blank">moveTo</a></strong> y <strong><a title="Método lineTo del objeto drawingFrame" href="http://help.adobe.com/es_ES/Flash/10.0_ExtendingFlash/WS5b3ccc516d4fbf351e63e3d118a9024f3f-7c62.html" target="_blank">lineTo</a></strong> que son idénticos a los que utilizamos en la API de dibujo de ActionScript y los método <strong><a title="Método beginFrame del objeto drawingLayer" href="http://help.adobe.com/es_ES/Flash/10.0_ExtendingFlash/WS5b3ccc516d4fbf351e63e3d118a9024f3f-7c62.html" target="_blank">beginFrame</a></strong> y <strong><a title="Método endFrame del objeto drawingLayer" href="http://help.adobe.com/es_ES/Flash/10.0_ExtendingFlash/WS5b3ccc516d4fbf351e63e3d118a9024f3f-7c64.html" target="_blank">endFrame</a> </strong>para indicar el incio y el fin del dibujo de la pre-visualización. Por ejemplo, con el siguiente código dibujaríamos un cuadro de 20&#215;20 en 0, 0:</p>
<pre lang="javascript">fl.drawingLayer.beginFrame();
fl.drawingLayer.moveTo(0, 0);
fl.drawingLayer.lineTo(20, 0);
fl.drawingLayer.lineTo(20, 20);
fl.drawingLayer.lineTo(0, 20);
fl.drawingLayer.lineTo(0, 0);
fl.drawingLayer.endFrame();</pre>
<p>Y para el momento del dibujo final utilizaremos también el objeto <a title="Objeto drawingLayer" href="http://help.adobe.com/es_ES/Flash/10.0_ExtendingFlash/WS5b3ccc516d4fbf351e63e3d118a9024f3f-7ff6.html" target="_blank"><strong>drawingLayer</strong></a> para crear un objeto <strong><a title="Objeto Path" href="http://help.adobe.com/es_ES/Flash/10.0_ExtendingFlash/WS5b3ccc516d4fbf351e63e3d118a9024f3f-7f3e.html" target="_blank">path</a></strong> con el método <strong><a title="Método newPath del objeto drawingLayer" href="http://help.adobe.com/es_ES/Flash/10.0_ExtendingFlash/WS5b3ccc516d4fbf351e63e3d118a9024f3f-7c5d.html" target="_blank">newPath</a>,</strong> luego utilizaremos los métodos <strong><a title="Método addPoint del objeto Path." href="http://help.adobe.com/es_ES/Flash/10.0_ExtendingFlash/WS5b3ccc516d4fbf351e63e3d118a9024f3f-79d9.html" target="_blank">addPoint</a></strong> y <strong><a title="Método makeShape del objeto Path." href="http://help.adobe.com/es_ES/Flash/10.0_ExtendingFlash/WS5b3ccc516d4fbf351e63e3d118a9024f3f-79d6.html" target="_blank">makeShape</a></strong> para crear nuestro dibujo. Por ejemplo:</p>
<pre lang="javascript">var myPath = fl.drawingLayer.newPath();
myPath.addPoint(0, 20);
myPath.addPoint(20, 20);
myPath.addPoint(20, 0);
myPath.addPoint(0, 0);
myPath.makeShape(false, true);</pre>
<h3>Perfecto, y ahora ¿cómo modifico las propiedades de mi herramienta?</h3>
<p>Vale, para esto debemos recordar que en un principio utilizamos el método <a title="Método setOptionsFile del objeto Tool." href="http://help.adobe.com/es_ES/Flash/10.0_ExtendingFlash/WS5b3ccc516d4fbf351e63e3d118a9024f3f-77f2.html" target="_blank"><strong>setOptionsFile</strong></a> del objeto <strong><a title="Objeto Tool." href="http://help.adobe.com/es_ES/Flash/10.0_ExtendingFlash/WS5b3ccc516d4fbf351e63e3d118a9024f3f-7f33.html" target="_blank">tool</a></strong> donde indicamos un fichero xml, este fichero xml contiene la definición de las propiedades que utilizaremos en la herramienta. Por ejemplo para la herramienta tabla, utilizo dos propiedades <strong>nColumns</strong> y <strong>nRows</strong>. Un ejemplo del fichero xml de configuración es el siguiente:</p>
<pre lang="xml">property name="Columnas: " variable="nColumns" min="1" max="100" defaultValue="3" type="Number"
property name="Filas: " variable="nRows" min="1" max="100" defaultValue="3" type="Number"</pre>
<p>Cuando el usuario modifique estos valores en el panel de propiedades se nos notificará en el evento (la función) <strong><a title="Función notifySettingsChanged" href="http://help.adobe.com/es_ES/Flash/10.0_ExtendingFlash/WS5b3ccc516d4fbf351e63e3d118a9024f3f-7758.html" target="_blank">notifySettingsChanged</a><span style="font-weight: normal;">. Un ejemplo de como utilizar los valores modificados es el siguiente:</span></strong></p>
<pre lang="javascript">function notifySettingsChanged()
{
	var theTool = fl.tools.activeTool;

	this.nColumns = theTool.nColumns;
	this.nRows = theTool.nRows;
}</pre>
<p><strong><span style="font-weight: normal;">Y listo, con esto ya tenemos controladas todas las fases del diseño de una herramienta.</span></strong></p>
<h1>EJEMPLOS</h1>
<p>A continuación un par de ejemplos de lo que podemos conseguir de una manera sencilla con esta herramienta.</p>
<p style="text-align: center;"><a href="http://www.nomeva.com/wp-content/uploads/2009/07/imagen-2.png"><img class="aligncenter size-thumbnail wp-image-392" title="Ejemplo 1 Herramienta Tablas" src="http://www.nomeva.com/wp-content/uploads/2009/07/imagen-2-300x187.png" alt="Ejemplo 1 Herramienta Tablas" width="300" height="187" /></a></p>
<p><a href="http://www.nomeva.com/wp-content/uploads/2009/07/imagen-2.png"></a><a href="http://www.nomeva.com/wp-content/uploads/2009/07/imagen-3.png"><img class="aligncenter size-medium wp-image-393" title="Ejemplo 2 Herramienta Tablas" src="http://www.nomeva.com/wp-content/uploads/2009/07/imagen-3-300x187.png" alt="Ejemplo 2 Herramienta Tablas" width="300" height="187" /></a></p>
<p><img class="aligncenter size-full wp-image-395" title="herramienta tablas" src="http://www.nomeva.com/wp-content/uploads/2009/07/herramienta_tablas.png" alt="herramienta tablas" width="313" height="412" /></p>
<h1>DESCARGAS</h1>
<p>Tenemos dos tipos de descargas, para instalar simplemente la <strong>herramienta</strong> <strong>Tablas</strong> y para descargar el JSFL:</p>
<ul>
<li><a title="Extensión Herramienta Tablas" onclick="javascript:pageTracker._trackPageview('/downloads/tutoriales/jsfl/Escribir_palabra_mxp.zip');" href="http://www.nomeva.com/tutoriales/jsfl/herramienta_tablas.mxp" target="_blank">Extensión</a> <strong>Herramienta Tablas</strong> (instalador mxp).</li>
<li><a title="Herramienta Tablas" href="http://www.nomeva.com/tutoriales/jsfl/herramienta_tablas.zip" target="_blank">Paquete zip</a> con la <strong>Herramienta Tablas</strong> (ficheros jsfl, xml y png).</li>
</ul>
<h1>INSTALACIÓN</h1>
<p>Una vez que se haya instalado la extensión debemos asignarla a un grupo de herramienta desde el panel <strong>Personalizar panel de herramientas</strong> y listo ya se puede utilizar.</p>
<p><a href="http://www.nomeva.com/wp-content/uploads/2009/07/imagen-4.png"><img class="aligncenter size-medium wp-image-394" title="Personalizar panel herramientas" src="http://www.nomeva.com/wp-content/uploads/2009/07/imagen-4-300x127.png" alt="Personalizar panel herramientas" width="300" height="127" /></a></p>
<p>Dudas, sugerencias o comentarios, aquí estaré.</p>
<p>Saludos.</p>
<h3>Entradas relacionadas</h3>
<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>
<li><a title="Tutorial JSFL - Introducción a Paneles" href="http://www.nomeva.com/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="http://www.nomeva.com/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="http://www.nomeva.com/2009/07/05/tutorial-jsfl-guardar-copia-fla-12-comando/" target="_blank">Tutorial JSFL &#8211; Guardar copia FLA 1/2 (comando)</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.nomeva.com/2009/07/17/tutorial-jsfl-introduccion-herramientas-tools/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Tutorial JSFL &#8211; Guardar copia FLA 1/2 (comando)</title>
		<link>http://www.nomeva.com/2009/07/05/tutorial-jsfl-guardar-copia-fla-12-comando/</link>
		<comments>http://www.nomeva.com/2009/07/05/tutorial-jsfl-guardar-copia-fla-12-comando/#comments</comments>
		<pubDate>Sun, 05 Jul 2009 09:27:34 +0000</pubDate>
		<dc:creator>Luis Adrián</dc:creator>
				<category><![CDATA[Flash]]></category>
		<category><![CDATA[JSFL]]></category>
		<category><![CDATA[Tutoriales]]></category>
		<category><![CDATA[command]]></category>
		<category><![CDATA[extension]]></category>
		<category><![CDATA[Extensiones]]></category>
		<category><![CDATA[fla]]></category>
		<category><![CDATA[mxp]]></category>
		<category><![CDATA[tutorial]]></category>

		<guid isPermaLink="false">http://www.nomeva.com/?p=340</guid>
		<description><![CDATA[Esta es la primera entrega de un grupo de dos tutoriales sobre una misma tarea, guardar una copia del documento Fla con el que se esta trabajando pero sin perder el documento actual en el IDE de Flash. Introducción Me explico mejor, existe la opción de Guardar como, pero esta opción lo que hace es abrir [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: center;"><img class="size-full wp-image-343 aligncenter" title="document fla backup" src="http://www.nomeva.com/wp-content/uploads/2009/07/document_fla_backup.jpg" alt="document fla backup" width="214" height="159" /></p>
<p>Esta es la primera entrega de un grupo de dos <strong><a title="Tutoriales en nomeva.com" href="http://www.nomeva.com/category/tutoriales/" target="_blank">tutoriales</a></strong> sobre una misma tarea, <strong>guardar</strong> una <strong>copia</strong> del <strong>documento</strong> <a title="Documento Fla" href="http://filext.com/file-extension/fla" target="_blank"><strong>Fla</strong></a> con el que se esta trabajando pero sin perder el documento actual en el <strong>IDE</strong> de<strong> Flash.</strong></p>
<h1>Introducción</h1>
<p>Me explico mejor, existe la opción de <strong>Guardar como</strong>, pero esta opción lo que hace es abrir el cuadro de diálogo donde nos permite especificar la ruta y nombre del documento <a title="Documento Fla" href="http://filext.com/file-extension/fla" target="_blank"><strong>Fla</strong></a>, al hacer clic el guardar el documento que se queda en edición en el <strong>IDE</strong> de <strong>Flash</strong> es el nuevo. Pero, ¿que pasa si quiero trabajar sobre el mismo fichero?, porque lo que realmente quería hacer era una copia del documento, pues que tenemos que cerrar el documento nuevo y abrir el original.</p>
<p>Bueno para esto sirve el <strong>comando</strong> que vamos a hacer en este <strong>tutorial</strong>. En el siguiente tutorial vamos a hacer lo mismo pero lo haremos con un <strong>panel</strong> para ver las ventajas de un sistema sobre el otro.</p>
<blockquote><p><strong>NOTA</strong><br />
Puede ser interesante leer antes o después este otro <a title="Tutorial JSFL - Introducción a Comandos" href="http://www.nomeva.com/2008/09/26/tutorial-jsfl-introduccion-a-comando/" target="_blank"><strong>post</strong></a> de <strong>Introducción a Comandos</strong> para saber qué son, dónde van y cómo funcionan.</p></blockquote>
<h1>Tutorial</h1>
<p>Para hacer la tarea de <strong>guardar</strong> una <strong>copia</strong> debemos primeramente guardar el documento en edición, esto lo hacemos mediante el método <a title="Método save del Objeto Document" href="http://livedocs.adobe.com/flash/8/main/wwhelp/wwhimpl/common/html/wwhelp.htm?context=LiveDocs_Parts&amp;file=00004635.html" target="_blank"><strong>save</strong></a> del objeto <strong><a title="Objeto Document" href="http://livedocs.adobe.com/flash/8/main/wwhelp/wwhimpl/common/html/wwhelp.htm?context=LiveDocs_Parts&amp;file=00004635.html" target="_blank">Document</a><span style="font-weight: normal;">,</span></strong></p>
<pre lang="javascript">fl.getDocumentDOM().save(true);</pre>
<p><strong><span style="font-weight: normal;">Una vez guardado el documento procedemos a realizar una copia, para esto hacemos uso del método </span><a title="Método copy del objeto FLfile" href="http://livedocs.adobe.com/flash/8/main/wwhelp/wwhimpl/common/html/wwhelp.htm?context=LiveDocs_Parts&amp;file=00004661.html#137637" target="_blank">copy</a><span style="font-weight: normal;"> del objeto </span><a title="Objeto FLfile" href="http://livedocs.adobe.com/flash/8/main/wwhelp/wwhimpl/common/html/wwhelp.htm?context=LiveDocs_Parts&amp;file=00004660.html" target="_blank">FLfile</a><span style="font-weight: normal;">, éste método recibe dos parámetros:</span></strong></p>
<ul>
<li><strong>Origen</strong>: La ruta del fichero que deseamos copia.</li>
<li><strong>Destino</strong>: La ruta del fichero resultante.</li>
</ul>
<blockquote><p><strong>NOTA</strong>:</p>
<p>Es importante destacar que las rutas deben estar expresadas en  <strong>file:///</strong></p></blockquote>
<p>Ya que las rutas las debemos especificar mediante  <strong>file:///</strong> haremos uso de una de las novedades de <strong>Flash CS4</strong>, me refiero a la propiedad <a title="Propiedad pathURI del objeto Document" href="http://help.adobe.com/es_ES/Flash/10.0_ExtendingFlash/WS9931616E-E7F0-41de-A90D-50B9342C8D04.html" target="_blank"><strong>pathURI</strong></a> del 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>ya<strong> </strong>que esta propiedad nos devuelve precisamente la <strong>ruta</strong> del <strong>documento</strong> <strong>Fla</strong> en edición expresda en <strong>file:///</strong>.</p>
<blockquote><p><strong>NOTA</strong>:</p>
<p>En caso de que el documento no haya sido guardado todavía el valor de la propiedad <strong>pathURI</strong> será <strong>udefined</strong> con lo que podemos controlar esa situación.</p></blockquote>
<p>El código que utilizaremos para hacer la copia sería el siguiente:</p>
<pre lang="javascript">FLfile.copy(fl.getDocumentDOM().pathURI, NUEVO_NOMBRE);</pre>
<p>El caso de que la copia se realice con éxito el método <a title="Método copy del objeto FLfile" href="http://livedocs.adobe.com/flash/8/main/wwhelp/wwhimpl/common/html/wwhelp.htm?context=LiveDocs_Parts&amp;file=00004661.html#137637" target="_blank"><strong>copy</strong></a> nos devolverá <strong>true</strong>, en caso contrario devolverá <strong>false</strong>, con lo cual también podemos controlar esa situación para informar al usuario.</p>
<p style="text-align: center;"><img class="size-full wp-image-344 aligncenter" title="command save copy" src="http://www.nomeva.com/wp-content/uploads/2009/07/command_save_copy.png" alt="command save copy" width="401" height="285" /></p>
<p>A continuación en código completo del commando:</p>
<pre lang="javascript">var oDoc;

this.config();

function config()
{
	fl.showIdleMessage(false);
	fl.outputPanel.clear();

	if(fl.getDocumentDOM())
	{
		this.oDoc = fl.getDocumentDOM();

		this.init();
	}
	else
	{
		alert("Debes tener un documento abierto.");
	}
}

function init()
{
	if(this.oDoc.pathURI)
	{
		this.oDoc.save(true);
		var bResult = FLfile.copy(this.oDoc.pathURI, this.oDoc.pathURI.split(".fla")[0] + "_back.fla");
		if(bResult)
		{
			alert("La copia se ha guardado correctamente.");
		}
		else
		{
			alert("Error al guardar la copia.");
		}
	}
	else
	{
		alert("El documento no ha sido guradado.\nPara crear una copia debes guardar antes el documento.");
	}
}</pre>
<h1>Descargas</h1>
<ul>
<li><a title="Extensión mxp save copy document" href="http://www.nomeva.com/tutoriales/jsfl/Guardar_copia_mxp.zip" target="_blank">Extensión para instalar el comando</a> (fichero mxp).</li>
<li><a title="save copy document jsfl" href="http://www.nomeva.com/tutoriales/jsfl/Guardar_copia_jsfl.zip" target="_blank">Fichero JSFL</a>.</li>
</ul>
<p>Dudas, sugerencias o comentarios, aquí estaré.</p>
<p>Saludos.</p>
<h3>Entradas relacionadas</h3>
<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>
<li><a title="Tutorial JSFL - Introducción a Paneles" href="http://www.nomeva.com/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="http://www.nomeva.com/2009/06/28/tutorial-jsfl-panel-auto-save/" target="_blank">Tutorial JSFL &#8211; Panel Auto Save</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.nomeva.com/2009/07/05/tutorial-jsfl-guardar-copia-fla-12-comando/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
	</channel>
</rss>

