<?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>MadeInFlex &#187; Componentes</title>
	<atom:link href="http://www.madeinflex.com/categoria/componentes/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.madeinflex.com</link>
	<description>Creando Soluciones RIA...</description>
	<lastBuildDate>Wed, 30 Nov 2011 16:04:06 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.6</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Clear Toolkit framework</title>
		<link>http://www.madeinflex.com/2009/03/08/clear-toolkit-framework/</link>
		<comments>http://www.madeinflex.com/2009/03/08/clear-toolkit-framework/#comments</comments>
		<pubDate>Sun, 08 Mar 2009 10:05:27 +0000</pubDate>
		<dc:creator>Joan Garnet</dc:creator>
				<category><![CDATA[Componentes]]></category>
		<category><![CDATA[Flex Builder]]></category>
		<category><![CDATA[Recursos]]></category>

		<guid isPermaLink="false">http://www.madeinflex.com/2009/03/08/clear-toolkit-framework/</guid>
		<description><![CDATA[<!-- matched  --><!-- final 0 -->La gente de Farata Systems ha liberado su framework &#8220;Clear Toolkit framework&#8221; para desarrollo de enterprise RIAs con Flex y Java. El framework está disponible en sourceforge bajo licencia MIT.
Clear Toolkit framework dispone de varios componentes:

Clear Data Builder: plugin de Eclipse para generación de aplicaciones CRUD para BlazeDS o LCDS a partir de sentencias SQL [...]]]></description>
			<content:encoded><![CDATA[<!-- matched  --><!-- final 0 --><p>La gente de <a href="http://flexblog.faratasystems.com/">Farata Systems</a> ha liberado su framework &#8220;Clear Toolkit framework&#8221; para desarrollo de enterprise RIAs con Flex y Java. El framework está disponible en <a href="http://sourceforge.net/projects/cleartoolkit/">sourceforge</a> bajo licencia MIT.<br />
Clear Toolkit framework dispone de varios componentes:</p>
<ul>
<li><strong>Clear Data Builder</strong>: plugin de Eclipse para generación de aplicaciones CRUD para BlazeDS o LCDS a partir de sentencias SQL o Java DTOs</li>
<li><strong>DTO2Fx</strong>: generador de clases ActionScript a partir de sus homólogas en Java</li>
<li><strong>Log4Fx</strong>: plugin de Eclipse para la API de logging de Flex. Automatiza y hace el proceso de logging más amigable</li>
<li><strong>Fx2Ant</strong>: generador de ANT build scripts optimizados para proyectos de Flex Builder</li>
<li><strong>clear.swc</strong>: Librería avanzada de componentes Flex situada en el paquete <code>com.farata.components</code></li>
</ul>
<p>Además de lo mencionado puedes ver <a href="http://sourceforge.net/forum/forum.php?forum_id=921193">el roadmap para la version 4 aquí</a>.<br />
Algunos enlaces relacionados:</p>
<ul>
<li><a href="http://sourceforge.net/projects/cleartoolkit/">Clear Toolkit framework</a></li>
<li><a href="http://flexblog.faratasystems.com/?p=399">Introducing Enhanced Flex Components from Clear Toolkit Framework</a></li>
<li><a href="http://flexblog.faratasystems.com/?p=398">Clear Data Builder: data synchronization in a multi-user environment</a></li>
</ul>]]></content:encoded>
			<wfw:commentRss>http://www.madeinflex.com/2009/03/08/clear-toolkit-framework/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Degrafa: Declarative Graphics Framework</title>
		<link>http://www.madeinflex.com/2008/06/11/degrafa-declarative-graphics-framework/</link>
		<comments>http://www.madeinflex.com/2008/06/11/degrafa-declarative-graphics-framework/#comments</comments>
		<pubDate>Wed, 11 Jun 2008 18:48:42 +0000</pubDate>
		<dc:creator>MIF Team</dc:creator>
				<category><![CDATA[Componentes]]></category>
		<category><![CDATA[Recursos]]></category>

		<guid isPermaLink="false">http://www.madeinflex.com/2008/06/11/degrafa-declarative-graphics-framework/</guid>
		<description><![CDATA[<!-- matched  --><!-- final 0 -->Degrafa es una librería de creación de gráficos que saca buen partido a la potencia de mxml.
Con Degrafa podemos declarar fácilmente formas geométricas, skins, rellenos, formas compuestas por repetición, etc.. de la misma forma que lo hacemos al declarar contenedores o controles en Flex mediante tags MXML.
Un ejemplo:

		  
		  
		  
		  [...]]]></description>
			<content:encoded><![CDATA[<!-- matched  --><!-- final 0 --><p>Degrafa es una librería de creación de gráficos que saca buen partido a la potencia de mxml.<br />
Con Degrafa podemos declarar fácilmente formas geométricas, skins, rellenos, formas compuestas por repetición, etc.. de la misma forma que lo hacemos al declarar contenedores o controles en Flex mediante tags MXML.</p>
<p>Un ejemplo:</p>
<p><object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" codebase="http://fpdownload.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,0,0" width="550" height="200" id="ftf_wp" align="middle">
		  <param name="movie" value="http://www.madeinflex.com/./wp-content/plugins/FlashTextFormatter/ftf_wp.swf" />
		  <param name="quality" value="high" />
		  <param name="scale" value="noscale" />
		  <param name="bgcolor" value="#ffffff" />
		  <param name="flashvars" value="w=550&#038;h=200&#038;file=http://www.madeinflex.com/index.php&#038;ftf=true&#038;postID=582&#038;no=0&#038;def=http://www.madeinflex.com./wp-content/plugins/FlashTextFormatter/definitions/as2.xml&#038;auto=true&#038;" />
		  <embed src="http://www.madeinflex.com/./wp-content/plugins/FlashTextFormatter/ftf_wp.swf" quality="high" scale="noscale" bgcolor="#ffffff" width="550" height="200" name="ftf_wp" align="middle" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer" flashvars="w=550&#038;h=200&#038;file=http://www.madeinflex.com/index.php&#038;ftf=true&#038;postID=582&#038;no=0&#038;def=http://www.madeinflex.com./wp-content/plugins/FlashTextFormatter/definitions/as2.xml&#038;auto=true&#038;" />
		</object></p>
<p>Más información en <a href="http://www.degrafa.com">http://www.degrafa.com</a></p>]]></content:encoded>
			<wfw:commentRss>http://www.madeinflex.com/2008/06/11/degrafa-declarative-graphics-framework/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Tres puntos a recordar al crear una libreria</title>
		<link>http://www.madeinflex.com/2008/06/11/tres-puntos-a-recordar-al-crear-una-libreria/</link>
		<comments>http://www.madeinflex.com/2008/06/11/tres-puntos-a-recordar-al-crear-una-libreria/#comments</comments>
		<pubDate>Tue, 10 Jun 2008 22:56:37 +0000</pubDate>
		<dc:creator>Xavi Beumala</dc:creator>
				<category><![CDATA[Artículos]]></category>
		<category><![CDATA[Componentes]]></category>
		<category><![CDATA[Flex Builder]]></category>
		<category><![CDATA[Tips]]></category>
		<category><![CDATA[Tutoriales]]></category>

		<guid isPermaLink="false">http://www.madeinflex.com/2008/06/11/tres-puntos-a-recordar-al-crear-una-libreria/</guid>
		<description><![CDATA[<!-- matched  --><!-- final 0 -->Utilizando compc o bien, desde FlexBuilder, podemos crear librerías de código en ActionScript y/o mxml que luego podemos distribuir en formato .swc a terceros ya sea por comodidad, porque nos dedicamos a vender librerías de código, porque es una forma de paquetizar conocimiento, fomentar la reutilización o por cualquier otro motivo.
La cuestión es que para [...]]]></description>
			<content:encoded><![CDATA[<!-- matched  --><!-- final 0 --><p>Utilizando <a href="http://livedocs.adobe.com/flex/3/html/help.html?content=compilers_22.html">compc</a> o bien, desde FlexBuilder, podemos <a href="http://livedocs.adobe.com/flex/3/html/help.html?content=projects_7.html">crear librerías de código</a> en ActionScript y/o mxml que luego podemos distribuir en formato .swc a terceros ya sea por comodidad, porque nos dedicamos a vender librerías de código, porque es una forma de paquetizar conocimiento, fomentar la reutilización o por cualquier otro motivo.</p>
<p>La cuestión es que para que la librería se vea lo mejor acabada y profesional posible deberíamos considerar siempre los siguientes puntos:</p>
<ul>
<li><a href="http://www.madeinflex.com/2008/06/11/tres-puntos-a-recordar-al-crear-una-libreria/#toc-desvincular-la-sdk-de-flex">Desvincular la SDK de Flex</a></li>
<li><a href="http://www.madeinflex.com/2008/06/11/tres-puntos-a-recordar-al-crear-una-libreria/#toc-crear-un-manifestxml">Crear un manifest.xml</a></li>
<li><a href="http://www.madeinflex.com/2008/06/11/tres-puntos-a-recordar-al-crear-una-libreria/#toc-crear-un-designxml">Crear un design.xml</a></li>
</ul>
<p><span id="more-682"></span><br />
<br/></p>
<h3 id="toc-desvincular-la-sdk-de-flex">Desvincular la SDK de Flex</h3>
<p>Es muy probable que en tu librería exista alguna referencia a cualquier clase de la SDK de Flex, ya sea debido a que alguno de tus componentes hereda de alguno de los base, porque utilizas alguno de sus managers o clases de utilidad o bien porque has paquetizado algun mxml en ella. En cualquier da estos casos, el linkador, detectará las dependencias directas de tus clases con las de la SDK. Este proceso será un proceso en cascada que detectará todas las interrelaciones incluso dentro de la misma SDK. Por ejemplo, si estas paquetizando una clase que no tiene nada, que simplemente herede de mx.controls.Button tu librería pesará entorno a los 200K debido a las dependencias que tiene Button con todo el resto del framework. Todas estas clases se añadirán pues a tu librería.</p>
<p><b>NOTA:</b> Esto no es una forma de reducir el tamaño final de los swf&#8217;s</p>
<p>El concepto es correcto, pero el 99% de los usuarios que utilicen tus librerias no van a necesitar esas clases ya que cuando compilen sus proyectos con tu librería igualmente tendrán las clases de la SDK (resultando con el mismo tamaño final).</p>
<p>Por lo tanto podemos hacer que no se incluyan las dependencias de la SDK en la librería. A priori no notaremos una gran mejora en los tiempos de compilacion (aunque un poquito sí). Si estamos distribuyendo la libreria entonces sí que podemos ahorrar un poco de ancho de banda y mejorar los tiempos de descarga.</p>
<p>Para no añadir la SDK a la librería, en FlexBuilder, tenemos que ir a las propiedades del proyecto > &#8220;Flex Library Build Path&#8221; > &#8220;Library Path&#8221;. Ahi cambiamos la opcion &#8220;Link Type&#8221; de framework.swc para que sea &#8220;External&#8221;.</p>
<p><img src="/img/entries/libCreation1.png"/></p>
<p><br/></p>
<h3 id="toc-crear-un-manifest-xml">Crear un manifest.xml</h3>
<p>Tomando como ejemplo los componentes paquetizados en la SDK de Flex, siempre que añadimos uno a un .mxml el componente se instancia con una sintaxis parecida a &lt;mx:Button /&gt; siendo el único namespace que se usa siempre <b>mx</b>. En cambio cuando hacemos nuestras propias librerias siempre se utiliza como namespace la última parte del package donde se encuentra el componente que estamos instanciando. De esta forma si tenemos componentes en paquetes distintos i.e: com.madeinflex.package1 y com.madeinflex.package2 se nos instanciaran los componentes de la forma &lt;package1:Componente1 /&gt; o &lt;package2Componente2 /&gt;.</p>
<p>La verdad es que luego, el uso de la librería, es bastante molesto ya que se terminan declarando un sinfín de namespaces en el xml que ensucia bastante el código. Por otro lado no se puede saber con un simple vistazo a qué librería pertenece un componente concreto. Se tiene que ir a la definición del namespace, mirar cuál es su package y luego ponerle un poco de imaginación.</p>
<p>Para solventar esto FlexBuilder y compc ponen a nuestra disposicion los manifest, asociados a un namespace. Un manifest no es mas que un fichero xml en el que se declaran, en la forma clave / valor, los componentes contenidos en una librería. Por ejemplo:</p>
<p><object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" codebase="http://fpdownload.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,0,0" width="550" height="130" id="ftf_wp" align="middle">
		  <param name="movie" value="http://www.madeinflex.com/./wp-content/plugins/FlashTextFormatter/ftf_wp.swf" />
		  <param name="quality" value="high" />
		  <param name="scale" value="noscale" />
		  <param name="bgcolor" value="#ffffff" />
		  <param name="flashvars" value="w=550&#038;h=130&#038;file=http://www.madeinflex.com/index.php&#038;ftf=true&#038;postID=682&#038;no=0&#038;def=http://www.madeinflex.com./wp-content/plugins/FlashTextFormatter/definitions/as2.xml&#038;auto=true&#038;" />
		  <embed src="http://www.madeinflex.com/./wp-content/plugins/FlashTextFormatter/ftf_wp.swf" quality="high" scale="noscale" bgcolor="#ffffff" width="550" height="130" name="ftf_wp" align="middle" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer" flashvars="w=550&#038;h=130&#038;file=http://www.madeinflex.com/index.php&#038;ftf=true&#038;postID=682&#038;no=0&#038;def=http://www.madeinflex.com./wp-content/plugins/FlashTextFormatter/definitions/as2.xml&#038;auto=true&#038;" />
		</object></p>
<p>En FlexBuilder, para asociar un fichero de manifest a un namespace lo tenemos que hacer a través del panel de propiedades del proyecto. En el subapartado &#8220;Flex Library Compiler&#8221; definiremos el namespace y le vincularemos el fichero. Si declaramos que el nombre de espacios sea http://www.madeinflex.com/mif entonces podremos instanciar los componentes de la siguiente forma:</p>
<p><object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" codebase="http://fpdownload.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,0,0" width="550" height="80" id="ftf_wp" align="middle">
		  <param name="movie" value="http://www.madeinflex.com/./wp-content/plugins/FlashTextFormatter/ftf_wp.swf" />
		  <param name="quality" value="high" />
		  <param name="scale" value="noscale" />
		  <param name="bgcolor" value="#ffffff" />
		  <param name="flashvars" value="w=550&#038;h=80&#038;file=http://www.madeinflex.com/index.php&#038;ftf=true&#038;postID=682&#038;no=1&#038;def=http://www.madeinflex.com./wp-content/plugins/FlashTextFormatter/definitions/as2.xml&#038;auto=true&#038;" />
		  <embed src="http://www.madeinflex.com/./wp-content/plugins/FlashTextFormatter/ftf_wp.swf" quality="high" scale="noscale" bgcolor="#ffffff" width="550" height="80" name="ftf_wp" align="middle" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer" flashvars="w=550&#038;h=80&#038;file=http://www.madeinflex.com/index.php&#038;ftf=true&#038;postID=682&#038;no=1&#038;def=http://www.madeinflex.com./wp-content/plugins/FlashTextFormatter/definitions/as2.xml&#038;auto=true&#038;" />
		</object></p>
<p>Destacar aquí que podemos definir el id de un componente con un nomre distinto al de su clase. </p>
<p><img src="/img/entries/libCreation2.png"/></p>
<p>Otra cosa a considerar cuando paquetizamos una libreria es que muy probablemente no queramos que el programador que la utilice tenga acceso o pueda visualizar todas las clases que hemos paquetizdo. Puede haber clases de utilidades, superclases, clases de soporte, etc. que deberían ser transparentes y no mostrarse al integrador. Si declaramos un manifest para la librería y no declaramos en él estas clases el code autocomplete no se las mostrara aunque si que estarán en la librería y por lo tanto todo compilará correctamente.</p>
<p><br/></p>
<h3 id="toc-crear-un-design-xml">Crear un design.xml</h3>
<p>Puede que esta funcionalidad haya pasado desapercibida para muchos pero creo que es imprescindible para terminar de paquetizar bién una libreria y darle el toque final.</p>
<p>Al definir el namespace http://www.madeinflex.com/mif, por defecto FlexBuilder al instanciar un componente suyo lo hace de la forma <madeinflex:Component1 xmlns:madeinflex="http://www.madeinflex.com/mif" />, es decir utilizando <em>madeinflex</em> como prefijo para el namespace en vez de <em>mif</em> o cualquier otro. Al hacer esto parece que no podamos asignar a un mismo dominio distintos namespaces. Pero la SDK de flex si que lo hace no? xmlns:mx=&#8221;http://www.adobe.com/2006/mxml&#8221;.</p>
<p>Este es uno de los objetivos que tiene el fichero design.xml, poder definir el prefijo que FlexBuilder utilizará por defecto al instanciar un componente de la librería.</p>
<p>Otro aspecto que podemos pulir un poco más tiene que ver con la perspectiva de diseóo dentro de Flex Builder. Para los que la habéis utilizado habréis visto que en la vista &#8220;Components&#8221; aparece un árbol jerárquico con los distintos componentes que se pueden arrastrar al mxml. Por defecto todos los componentes o clases que se puedan instanciar visualmente dentro del proyecto aparecerán en la categoría  <em>Custom</em>. Pues bién, a través del fichero design.xml podemos hacer que los distintos componentes paquetizados en una librería aparezcan jerarquizados como creamos más conveniente.</p>
<p><object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" codebase="http://fpdownload.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,0,0" width="550" height="300" id="ftf_wp" align="middle">
		  <param name="movie" value="http://www.madeinflex.com/./wp-content/plugins/FlashTextFormatter/ftf_wp.swf" />
		  <param name="quality" value="high" />
		  <param name="scale" value="noscale" />
		  <param name="bgcolor" value="#ffffff" />
		  <param name="flashvars" value="w=550&#038;h=300&#038;file=http://www.madeinflex.com/index.php&#038;ftf=true&#038;postID=682&#038;no=2&#038;def=http://www.madeinflex.com./wp-content/plugins/FlashTextFormatter/definitions/as2.xml&#038;auto=true&#038;" />
		  <embed src="http://www.madeinflex.com/./wp-content/plugins/FlashTextFormatter/ftf_wp.swf" quality="high" scale="noscale" bgcolor="#ffffff" width="550" height="300" name="ftf_wp" align="middle" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer" flashvars="w=550&#038;h=300&#038;file=http://www.madeinflex.com/index.php&#038;ftf=true&#038;postID=682&#038;no=2&#038;def=http://www.madeinflex.com./wp-content/plugins/FlashTextFormatter/definitions/as2.xml&#038;auto=true&#038;" />
		</object></p>
<p>En este ejemplo estamos definendo que el prefijo para el namespace http://www.madeinflex.com/mif sea <em>mif</em> y tal como se ve en la figura, definimos dos categorias de componentes: MadeInFlex_1 y MadeInFlex_2 a las que asociamos respectivamente los componentes Component1 y Component2. Donde Component1 y Component2 son el atributo id del componente declarado en el manifest.xml.</p>
<p><img src="/img/entries/libCreation3.png"/></p>
<p>Para que estos cambios surjan efecto tenemos que forzar al compilador a añadir el fichero desing.xml a la librería. Para ello abrimos el panel de propiedades del proyecto >> Flex Library Build Path >> Assets y ahi marcamos tanto el manifest.xml como el design.xml. Esto hará que, aunque no sean ficheros referenciados desde el código y a los que por lo tanto el linker jamás llegaría, los añada al swc final.</p>
<p>Para rizar el rizo, podemos terminar de paquetizar nuestros componentes personalizando el icono que se utiliza en el árbol jerárquico. Para ello lo único que tenemos que hacer es utilizar el siguiente tag de metadatos en la clase que define el componente [IconFile("icono.png")]. Donde icono.png hace referencia al fichero que queremos utilizar como icono. El fichero referenciado se toma con una ruta relativa respecto a la clase que lo incluye. Destacar tambien que para que el icono se cargue éste se tiene que haber añadido a la compilacion (igual que hemos hecho con design.xml). Si se cambia el icono de una librería se tiene que reiniciar eclipse para que los cambios se vean reflejados. </p>
<p><img src="/img/entries/libCreation4.png"/></p>
<p>Te puedes <a href="/img/entries/eclipseLibraryProjects.zip">descargar aqui los proyectos utilizados</a> en los ejemplos.</p>]]></content:encoded>
			<wfw:commentRss>http://www.madeinflex.com/2008/06/11/tres-puntos-a-recordar-al-crear-una-libreria/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Flex Component Kit: FLVPlayback desde Flex</title>
		<link>http://www.madeinflex.com/2008/05/12/utilizacion-de-flex-component-kit-flvplayback-desde-flex/</link>
		<comments>http://www.madeinflex.com/2008/05/12/utilizacion-de-flex-component-kit-flvplayback-desde-flex/#comments</comments>
		<pubDate>Mon, 12 May 2008 20:39:09 +0000</pubDate>
		<dc:creator>David Serrano</dc:creator>
				<category><![CDATA[Artículos]]></category>
		<category><![CDATA[Componentes]]></category>
		<category><![CDATA[Tutoriales]]></category>

		<guid isPermaLink="false">http://www.madeinflex.com/2008/05/12/utilizacion-de-flex-component-kit-flvplayback-desde-flex/</guid>
		<description><![CDATA[<!-- matched  --><!-- final 0 -->ÃƒÅ¡ltimamente vemos, cada vez más, como el video se va introduciendo en la mayoría de los sites, llegando incluso a usarse como elemento principal del site: YouTube, Tele5 entre otras.
Flex nos aporta un componente de video para ello (VideoDisplay), pero quien lo haya utilzado, sabe que prácticamente no aporta nada. Por no traer, no trae [...]]]></description>
			<content:encoded><![CDATA[<!-- matched  --><!-- final 0 --><p>ÃƒÅ¡ltimamente vemos, cada vez más, como el video se va introduciendo en la mayoría de los sites, llegando incluso a usarse como elemento principal del site: <a href="http://www.youtube.com">YouTube</a>, <a href="http://mitele.telecinco.es">Tele5</a> entre otras.</p>
<p>Flex nos aporta un componente de video para ello (VideoDisplay), pero quien lo haya utilzado, sabe que prácticamente no aporta nada. Por no traer, no trae ni la barra de progreso.</p>
<p>Gracias al Flex Component Kit for Flash CS3, ahora podemos utilizar el componente de video de Flash o FLVPlayback, dentro de nuestra aplicación Flex sin mucho esfuerzo.<br />
<span id="more-669"></span><br />
<a href="http://www.madeinflex.com/2007/10/21/using-flash-and-flex-together/">Xavi y Carlos centraron su charla del Max</a> en la interacción de las diferentes tecnologías de Adobe; así que vamos a poner un ejemplo práctico de esa integración: la utilización del FLVPlayback dentro de Flex.</p>
<p>En primer lugar es necesario descargarse el <a href="http://www.adobe.com/cfusion/exchange/index.cfm?event=extensionDetail&amp;loc=en_us&amp;extid=1273018" title="Flex Component kit " target="_blank">Flex Component kit  </a></p>
<p>Una vez instalado y estando ya en Flash IDE, creamos un movieClip vacío,le llamamos player ,y dentro de él arrastramos el componente FLVPlayback.</p>
<p>Luego creamos un movieclip en una capa superior de nuestro movieclip player ,con la misma medida del componente. A este movieclip le llamaremos boundingBox.</p>
<p>Esto lo hacemos para poder ver el preview del componente dentro de Flex builder (dead preview) y sobretodo para definir la medida que tendrá el player y cualquiera de sus elementos internos. Esto es importante, ya que por ejemplo, la barra de progreso del player es mucho más larga y sin el boundingBox nos aparecería un scroll desagradable dentro de nuestro layout de Flex.</p>
<p>Una vez creados, vamos a convertir nuestro componente en UIComponent para poder exportarlo a Flex; para ello seleccionamos nuestro movieclip player en la biblioteca y seleccionamos del menú superior Commands -&gt; Make Flex Component.</p>
<p>Ahora ya tendríamos nuestro componente preparado para utilizarlo en Flex, pero necesitamos poder acceder a las propiedades de nuestro player desde Flex, es por ello que vamos a generar una clase que haga de Proxy entre Flex y nuestro componente para poder controlarlo desde Flex.<br />
Así que nos vamos al linkage del componente (seleccionando el componente de la biblioteca y clickando botón derecho -&gt; linkage y sustituimos la Base Class: mx.flash.UIMovieClip por Player.<br />
Ahora creamos un nuevo archivo as y lo llamamos Player.as</p>
<p>Esa será la clase que conecte Flex con el componente FLVPlayback. Vamos a ello:</p>
<p>En primer lugar, nuestra clase tiene que extender de mx.flash.UIMovieClip para poder utilizarse en Flex.  Luego generamos los métodos que necesitemos:</p>
<p><object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" codebase="http://fpdownload.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,0,0" width="550" height="200" id="ftf_wp" align="middle">
		  <param name="movie" value="http://www.madeinflex.com/./wp-content/plugins/FlashTextFormatter/ftf_wp.swf" />
		  <param name="quality" value="high" />
		  <param name="scale" value="noscale" />
		  <param name="bgcolor" value="#ffffff" />
		  <param name="flashvars" value="w=550&#038;h=200&#038;file=http://www.madeinflex.com/index.php&#038;ftf=true&#038;postID=669&#038;no=0&#038;def=http://www.madeinflex.com./wp-content/plugins/FlashTextFormatter/definitions/as2.xml&#038;auto=true&#038;" />
		  <embed src="http://www.madeinflex.com/./wp-content/plugins/FlashTextFormatter/ftf_wp.swf" quality="high" scale="noscale" bgcolor="#ffffff" width="550" height="200" name="ftf_wp" align="middle" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer" flashvars="w=550&#038;h=200&#038;file=http://www.madeinflex.com/index.php&#038;ftf=true&#038;postID=669&#038;no=0&#038;def=http://www.madeinflex.com./wp-content/plugins/FlashTextFormatter/definitions/as2.xml&#038;auto=true&#038;" />
		</object></p>
<p>Ahora, ya podemos publicar la película y nos generará un archivo .swf y otro archivo .swc.<br />
Ya podemos copiar nuestro archivo swc y pasarlo a nuestro proyecto de Flex.</p>
<p>Una vez vinculado o incluido dentro de la carpeta libs de nuestro proyecto Flex, simplemente necesitamos instanciarlo de la siguiente forma:</p>
<p><object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" codebase="http://fpdownload.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,0,0" width="550" height="200" id="ftf_wp" align="middle">
		  <param name="movie" value="http://www.madeinflex.com/./wp-content/plugins/FlashTextFormatter/ftf_wp.swf" />
		  <param name="quality" value="high" />
		  <param name="scale" value="noscale" />
		  <param name="bgcolor" value="#ffffff" />
		  <param name="flashvars" value="w=550&#038;h=200&#038;file=http://www.madeinflex.com/index.php&#038;ftf=true&#038;postID=669&#038;no=1&#038;def=http://www.madeinflex.com./wp-content/plugins/FlashTextFormatter/definitions/as2.xml&#038;auto=true&#038;" />
		  <embed src="http://www.madeinflex.com/./wp-content/plugins/FlashTextFormatter/ftf_wp.swf" quality="high" scale="noscale" bgcolor="#ffffff" width="550" height="200" name="ftf_wp" align="middle" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer" flashvars="w=550&#038;h=200&#038;file=http://www.madeinflex.com/index.php&#038;ftf=true&#038;postID=669&#038;no=1&#038;def=http://www.madeinflex.com./wp-content/plugins/FlashTextFormatter/definitions/as2.xml&#038;auto=true&#038;" />
		</object></p>
<p>Este ejemplo se puede ampliar fácilmente creando nuevos métodos en nuestra clase Player, añadiendo una imagen anterior a la reproducción del video o añadiendo la funcionalidad fullScreen, o lanzando eventos desde el player hacia Flex,&#8230;.</p>
<p>Bueno, en el próximo tutorial intentaremos crear un Player en as3 desde 0 para poderlo utilizar desde Flash o desde Flex indistintamente.</p>
<p><a href="http://www.madeinflex.com/img/entries/videoPlayer.zip">Descargar ficheros del ejemplo</a></p>]]></content:encoded>
			<wfw:commentRss>http://www.madeinflex.com/2008/05/12/utilizacion-de-flex-component-kit-flvplayback-desde-flex/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>RichHTMLTextEditor</title>
		<link>http://www.madeinflex.com/2008/04/09/richhtmltexteditor/</link>
		<comments>http://www.madeinflex.com/2008/04/09/richhtmltexteditor/#comments</comments>
		<pubDate>Wed, 09 Apr 2008 08:38:22 +0000</pubDate>
		<dc:creator>Xavi Beumala</dc:creator>
				<category><![CDATA[AIR (Apollo)]]></category>
		<category><![CDATA[Artículos]]></category>
		<category><![CDATA[Componentes]]></category>
		<category><![CDATA[Tips]]></category>

		<guid isPermaLink="false">http://www.madeinflex.com/2008/04/09/richhtmltexteditor/</guid>
		<description><![CDATA[<!-- matched  --><!-- final 0 -->Aquellos que habéis tenido que usar el control RichTextEditor os habréis dado cuenta de lo pobre que es el soporte que da FlashPlayer al HTML y de lo difícil que se hace trabajar con html.
El componente que muestro a continuación sólo sirve para aplicaciones AIR y es una paquetización del editor FCKEditor con lo cual [...]]]></description>
			<content:encoded><![CDATA[<!-- matched  --><!-- final 0 --><p>Aquellos que habéis tenido que usar el control RichTextEditor os habréis dado cuenta de lo pobre que es el soporte que da FlashPlayer al HTML y de lo difícil que se hace trabajar con html.</p>
<p>El componente que muestro a continuación sólo sirve para aplicaciones AIR y es una paquetización del editor <a href="http://www.fckeditor.net">FCKEditor</a> con lo cual aporta todas sus funcionalidades y permite la edición rica de contenidos html. Aunque funcional, se trata sólo de una prueba de concepto para mostrar lo que se puede hacer.</p>
<p>La idea básica sobre la que reside el componente es crear una página html al vuelo cada vez que se le asigne un valor al campo html. La página html generada se renderiza en un control <mx:HTML/> y cuando se quiere acceder al html que el usuario haya modificado se hace a través de DOM y de las funciones Javascript que FCKEditor expone.</p>
<p><span id="more-655"></span><br />
Un ejemplo de uso sería:<br />
<object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" codebase="http://fpdownload.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,0,0" width="550" height="200" id="ftf_wp" align="middle">
		  <param name="movie" value="http://www.madeinflex.com/./wp-content/plugins/FlashTextFormatter/ftf_wp.swf" />
		  <param name="quality" value="high" />
		  <param name="scale" value="noscale" />
		  <param name="bgcolor" value="#ffffff" />
		  <param name="flashvars" value="w=550&#038;h=200&#038;file=http://www.madeinflex.com/index.php&#038;ftf=true&#038;postID=655&#038;no=0&#038;def=http://www.madeinflex.com./wp-content/plugins/FlashTextFormatter/definitions/as2.xml&#038;auto=true&#038;" />
		  <embed src="http://www.madeinflex.com/./wp-content/plugins/FlashTextFormatter/ftf_wp.swf" quality="high" scale="noscale" bgcolor="#ffffff" width="550" height="200" name="ftf_wp" align="middle" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer" flashvars="w=550&#038;h=200&#038;file=http://www.madeinflex.com/index.php&#038;ftf=true&#038;postID=655&#038;no=0&#038;def=http://www.madeinflex.com./wp-content/plugins/FlashTextFormatter/definitions/as2.xml&#038;auto=true&#038;" />
		</object></p>
<p><img src="/img/entries/richHTMLTextEditor.png"/></p>
<p>Lo que faltaría implementar que dejo en vuestras manos sería:</p>
<ul>
<li>Soporte para Bindings en la propiedad html</li>
<li>Soporte para las funcionalidades de ajuste de tamaño según las normas de UIComponent</li>
</ul>
<p>Os podéis <a href="/img/entries/sample4-FCKEditor.zip">descargar el código de ejemplo así como el del componente de aquí</a>.</p>]]></content:encoded>
			<wfw:commentRss>http://www.madeinflex.com/2008/04/09/richhtmltexteditor/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>XSLT en AiR</title>
		<link>http://www.madeinflex.com/2008/03/31/xslt-en-air/</link>
		<comments>http://www.madeinflex.com/2008/03/31/xslt-en-air/#comments</comments>
		<pubDate>Mon, 31 Mar 2008 21:24:20 +0000</pubDate>
		<dc:creator>Xavi Beumala</dc:creator>
				<category><![CDATA[AIR (Apollo)]]></category>
		<category><![CDATA[Artículos]]></category>
		<category><![CDATA[Componentes]]></category>

		<guid isPermaLink="false">http://www.madeinflex.com/2008/03/31/xslt-en-air/</guid>
		<description><![CDATA[<!-- matched  --><!-- final 0 -->Aunque no salga en la lista de prestaciones, AIR soporta de forma indirecta la transformación de XML&#8217;s a través de XSLT&#8217;s. El kit de la cuestión recae en el uso del componente HTML o mejor aún de HTMLLoader, teniendo en cuenta que el componente HTML es un wrapper de HTMLLoader  en Flex.
El componente HTMLLoader [...]]]></description>
			<content:encoded><![CDATA[<!-- matched  --><!-- final 0 --><p>Aunque no salga en la lista de prestaciones, AIR soporta de forma indirecta la transformación de XML&#8217;s a través de XSLT&#8217;s. El kit de la cuestión recae en el uso del componente HTML o mejor aún de HTMLLoader, teniendo en cuenta que el componente HTML es un wrapper de HTMLLoader  en Flex.</p>
<p>El componente HTMLLoader lo que hace es delegar la interpretación y renderizado de código html en WebKit (el core de Safari). Y es este, WebKit, el que por sí mismo soporta XSLT de una forma muy sencilla. </p>
<p>A continuación muestro una pequeña prueba de concepto de cómo poder invocar xslt&#8217;s contra xml&#8217;s a través de una pequeña clase.</p>
<p><span id="more-648"></span><br />
En el navegador, una forma de aplicar xslt a un xml directamente sería hacer lo siguiente:</p>
<ol>
<li>
<p>Creamos el xml que queremos transformar (model.xml)</p>
<p><object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" codebase="http://fpdownload.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,0,0" width="550" height="200" id="ftf_wp" align="middle">
		  <param name="movie" value="http://www.madeinflex.com/./wp-content/plugins/FlashTextFormatter/ftf_wp.swf" />
		  <param name="quality" value="high" />
		  <param name="scale" value="noscale" />
		  <param name="bgcolor" value="#ffffff" />
		  <param name="flashvars" value="w=550&#038;h=200&#038;file=http://www.madeinflex.com/index.php&#038;ftf=true&#038;postID=648&#038;no=0&#038;def=http://www.madeinflex.com./wp-content/plugins/FlashTextFormatter/definitions/as2.xml&#038;auto=true&#038;" />
		  <embed src="http://www.madeinflex.com/./wp-content/plugins/FlashTextFormatter/ftf_wp.swf" quality="high" scale="noscale" bgcolor="#ffffff" width="550" height="200" name="ftf_wp" align="middle" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer" flashvars="w=550&#038;h=200&#038;file=http://www.madeinflex.com/index.php&#038;ftf=true&#038;postID=648&#038;no=0&#038;def=http://www.madeinflex.com./wp-content/plugins/FlashTextFormatter/definitions/as2.xml&#038;auto=true&#038;" />
		</object></p>
</li>
<li>
<p>Creamos la xlst que queremos (transformacion.xsl)</p>
<p><object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" codebase="http://fpdownload.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,0,0" width="550" height="200" id="ftf_wp" align="middle">
		  <param name="movie" value="http://www.madeinflex.com/./wp-content/plugins/FlashTextFormatter/ftf_wp.swf" />
		  <param name="quality" value="high" />
		  <param name="scale" value="noscale" />
		  <param name="bgcolor" value="#ffffff" />
		  <param name="flashvars" value="w=550&#038;h=200&#038;file=http://www.madeinflex.com/index.php&#038;ftf=true&#038;postID=648&#038;no=1&#038;def=http://www.madeinflex.com./wp-content/plugins/FlashTextFormatter/definitions/as2.xml&#038;auto=true&#038;" />
		  <embed src="http://www.madeinflex.com/./wp-content/plugins/FlashTextFormatter/ftf_wp.swf" quality="high" scale="noscale" bgcolor="#ffffff" width="550" height="200" name="ftf_wp" align="middle" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer" flashvars="w=550&#038;h=200&#038;file=http://www.madeinflex.com/index.php&#038;ftf=true&#038;postID=648&#038;no=1&#038;def=http://www.madeinflex.com./wp-content/plugins/FlashTextFormatter/definitions/as2.xml&#038;auto=true&#038;" />
		</object>
</li>
<li>Aplicamos la xlst al xml mediante una processing instruction del estilo &lt;?xml-stylesheet href=&#8221;transformacion.xsl&#8221; type=&#8221;text/xsl&#8221; ?&gt;</li>
</ol>
<p>Si cargamos modelo.xml en un navegador, éste parseará el xml y le aplicará la xslt indicada en la processing instruction dando como resultado un html (que es el que visualizaremos en el navegador).</p>
<p>Una de las funcionalidades que no podemos olvidar de HTMLControl es que es operativo aunque no esté incluido en la displayList.  Podemos crear una clase que, usando un HTMLLoader pero sin representarlo visualmente, intercepte el XML, le añada la processing instruction y que capture el html resultante.</p>
<p>Este sería el circuito normal. Mediante HTMLLoader.loadString podemos cargar en el componente un xhtml generado al vuelo (el que queramos concatenado con la processing instruction). El problema de esto es que por algún extraño motivo, loadString no carga la xsl de transformación. Pero sí que funciona utilizando html.load (). Para paliar este comportamiento anómalo la siguiente clase lo que hace es crear un fichero temporal (que después se elimina) y que es el que el HTMLLoader cargará.</p>
<p>A continuación se muestra la clase XSLTProcessor.as<br />
<object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" codebase="http://fpdownload.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,0,0" width="550" height="400" id="ftf_wp" align="middle">
		  <param name="movie" value="http://www.madeinflex.com/./wp-content/plugins/FlashTextFormatter/ftf_wp.swf" />
		  <param name="quality" value="high" />
		  <param name="scale" value="noscale" />
		  <param name="bgcolor" value="#ffffff" />
		  <param name="flashvars" value="w=550&#038;h=400&#038;file=http://www.madeinflex.com/index.php&#038;ftf=true&#038;postID=648&#038;no=2&#038;def=http://www.madeinflex.com./wp-content/plugins/FlashTextFormatter/definitions/as2.xml&#038;auto=true&#038;" />
		  <embed src="http://www.madeinflex.com/./wp-content/plugins/FlashTextFormatter/ftf_wp.swf" quality="high" scale="noscale" bgcolor="#ffffff" width="550" height="400" name="ftf_wp" align="middle" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer" flashvars="w=550&#038;h=400&#038;file=http://www.madeinflex.com/index.php&#038;ftf=true&#038;postID=648&#038;no=2&#038;def=http://www.madeinflex.com./wp-content/plugins/FlashTextFormatter/definitions/as2.xml&#038;auto=true&#038;" />
		</object>
</p>
<p>Una forma de usarlo sería desde una aplicación AIR basada en Flex:</p>
<p><object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" codebase="http://fpdownload.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,0,0" width="550" height="400" id="ftf_wp" align="middle">
		  <param name="movie" value="http://www.madeinflex.com/./wp-content/plugins/FlashTextFormatter/ftf_wp.swf" />
		  <param name="quality" value="high" />
		  <param name="scale" value="noscale" />
		  <param name="bgcolor" value="#ffffff" />
		  <param name="flashvars" value="w=550&#038;h=400&#038;file=http://www.madeinflex.com/index.php&#038;ftf=true&#038;postID=648&#038;no=3&#038;def=http://www.madeinflex.com./wp-content/plugins/FlashTextFormatter/definitions/as2.xml&#038;auto=true&#038;" />
		  <embed src="http://www.madeinflex.com/./wp-content/plugins/FlashTextFormatter/ftf_wp.swf" quality="high" scale="noscale" bgcolor="#ffffff" width="550" height="400" name="ftf_wp" align="middle" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer" flashvars="w=550&#038;h=400&#038;file=http://www.madeinflex.com/index.php&#038;ftf=true&#038;postID=648&#038;no=3&#038;def=http://www.madeinflex.com./wp-content/plugins/FlashTextFormatter/definitions/as2.xml&#038;auto=true&#038;" />
		</object></p>
<p>Aún y tratarse de una aplicación funcional la clase anterior es una prueba de concepto que casi no he probado. La xsl es un poco chorra, pero es la primera que he encontrado en google.</p>
<p>La verdad que se me ocurren bastantes circunstancias en las que una xsl puede simplificar mucho un desarrollo. No sólo tenemos que pensar en las xsls como una herramienta para la capa de presentación, también podemos usarlas para transformar, adaptar  o preparar modelos de datos: por ejemplo ordenación de árboles xml, agrupación, etc. </p>]]></content:encoded>
			<wfw:commentRss>http://www.madeinflex.com/2008/03/31/xslt-en-air/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>FlexReport</title>
		<link>http://www.madeinflex.com/2008/01/26/flexreport/</link>
		<comments>http://www.madeinflex.com/2008/01/26/flexreport/#comments</comments>
		<pubDate>Fri, 25 Jan 2008 22:32:21 +0000</pubDate>
		<dc:creator>Carlos Rovira</dc:creator>
				<category><![CDATA[Componentes]]></category>

		<guid isPermaLink="false">http://www.madeinflex.com/2008/01/26/flexreport/</guid>
		<description><![CDATA[<!-- matched  --><!-- final 0 -->Un nuevo proyecto Open Source acaba de salir. Se trata de FlexReport. El proyecto trata de cubrir uno de los puntos más flojos de Flex en la actualidad. Se trata de un componente para generar reportes mediante el cual puedes generar, previsualizar e imprimir reportes en Flex. El proyecto usa, entre otras cosas, AlivePDF internamente.

Puedes [...]]]></description>
			<content:encoded><![CDATA[<!-- matched  --><!-- final 0 --><p>Un nuevo proyecto Open Source acaba de salir. Se trata de <a href="http://www.kemelyon.com/flexreport">FlexReport</a>. El proyecto trata de cubrir uno de los puntos más flojos de Flex en la actualidad. Se trata de un componente para generar reportes mediante el cual puedes generar, previsualizar e imprimir reportes en Flex. El proyecto usa, entre otras cosas, <a href="http://alivepdf.bytearray.org/">AlivePDF</a> internamente.</p>
<p><img src='http://www.madeinflex.com/img/entries/2008/01/flexreport.png' alt='FlexReport' /></p>
<p>Puedes leer más al respecto <a href="http://www.kemelyon.com/bts/?p=5">aquí</a>. El código del proyecto está <a href="http://www.kemelyon.com/flexreport/srcview/index.html">aquí</a> y puedes colaborar para mejorarlo.</p>]]></content:encoded>
			<wfw:commentRss>http://www.madeinflex.com/2008/01/26/flexreport/feed/</wfw:commentRss>
		<slash:comments>10</slash:comments>
		</item>
		<item>
		<title>Sistema de ventanas</title>
		<link>http://www.madeinflex.com/2008/01/03/sistema-de-ventanas/</link>
		<comments>http://www.madeinflex.com/2008/01/03/sistema-de-ventanas/#comments</comments>
		<pubDate>Thu, 03 Jan 2008 14:04:35 +0000</pubDate>
		<dc:creator>Raul Diaz</dc:creator>
				<category><![CDATA[Componentes]]></category>
		<category><![CDATA[Recursos]]></category>

		<guid isPermaLink="false">http://www.madeinflex.com/2008/01/03/sistema-de-ventanas/</guid>
		<description><![CDATA[<!-- matched  --><!-- final 0 -->Os presento una pequeña librería para gestionar ventanas en Flex, aunque está en fase beta creo que a más de uno nos va a ser de gran utilidad.
Características principales:

 Aspecto de las ventanas configurable, por defecto tiene implementados el estilo de Windows XP y OSX Tiger.
 Implementa un sistema de alerts propio al estilo del [...]]]></description>
			<content:encoded><![CDATA[<!-- matched  --><!-- final 0 --><p>Os presento una pequeña librería para gestionar ventanas en Flex, aunque está en fase beta creo que a más de uno nos va a ser de gran utilidad.<br />
Características principales:</p>
<ul>
<li> Aspecto de las ventanas configurable, por defecto tiene implementados el estilo de Windows XP y OSX Tiger.</li>
<li> Implementa un sistema de alerts propio al estilo del OSX. Puede funcionar como un simple alert o embeber nuestra propia clase o MXML.</li>
<li> Implementa un sistema de cajas laterales al estilo del OSX en las que podemos incrustar clases o MXMLs propios.</li>
<li> Cerrado de ventanas con efecto programable fácilmente. Cada ventana puede tener su propio efecto.</li>
<li> Puede reproducir sonidos al cerrar, maximizar, restaurar y minimizar.</li>
<li> Cada ventana sólo puede tener una ventana hija, ésta otra ventana hija y así sucesivamente.</li>
<li> Fácil transferencia de datos entre ventanas.</li>
<li> &#8230;</li>
</ul>
<p>Espero que os sea de utilidad y por supuesto <strong>se aceptan  sugerencias</strong>.</p>
<ul>
<li> <a href="http://window.diaztorres.com/bin-release/test_window.html" title="ejemplo sistema de ventanas" target="_blank">Aplicación de ejemplo (view source habilitado)<br />
</a></li>
<li> <a href="http://ventanas.googlecode.com" title="c--digo fuente del ejemplo" target="_blank">Código fuente (projecto en Google Code)<br />
</a></li>
<li> <a href="http://window.diaztorres.com/index.html" title="documentaci--n" target="_blank">Documentación de la librería </a></li>
</ul>
<p align="center"><a href="http://www.madeinflex.com/img/entries/2007/12/snap111.jpg" title="ventanas_1"><img src="http://www.madeinflex.com/img/entries/2007/12/snap111.miniatura.jpg" alt="ventanas_1" /></a> <a href="http://www.madeinflex.com/img/entries/2007/12/lateral.jpg" title="ventanas_lateral"><img src="http://www.madeinflex.com/img/entries/2007/12/lateral.miniatura.jpg" alt="ventanas_lateral" /></a> <a href="http://www.madeinflex.com/img/entries/2007/12/alert.jpg" title="ventanas_alert"><img src="http://www.madeinflex.com/img/entries/2007/12/alert.miniatura.jpg" alt="ventanas_alert" /></a></p>]]></content:encoded>
			<wfw:commentRss>http://www.madeinflex.com/2008/01/03/sistema-de-ventanas/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>ILOG Elixir para Flex 3</title>
		<link>http://www.madeinflex.com/2007/11/17/ilog-elixir-para-flex-3/</link>
		<comments>http://www.madeinflex.com/2007/11/17/ilog-elixir-para-flex-3/#comments</comments>
		<pubDate>Sat, 17 Nov 2007 21:04:40 +0000</pubDate>
		<dc:creator>Joan Garnet</dc:creator>
				<category><![CDATA[Componentes]]></category>

		<guid isPermaLink="false">http://www.madeinflex.com/2007/11/17/ilog-elixir-para-flex-3/</guid>
		<description><![CDATA[<!-- matched  --><!-- final 0 -->Ha salido un beta de Elixir, un nuevo set de componentes que Ilog está desarrollando para Adobe y que verá la luz en cuanto salga Flex 3 a principios del 2008.
Por lo que veo, mayoritariamente son componentes que ofrecen soluciones a funcionalidades muy concretas:

Planning and scheduling displays, such as Gantt charts
Organizational charts
Maps for creating interactive [...]]]></description>
			<content:encoded><![CDATA[<!-- matched  --><!-- final 0 --><p>Ha salido un beta de <strong>Elixir</strong>, un nuevo set de componentes que <a href="http://www.ilog.com/">Ilog</a> está desarrollando para Adobe y que verá la luz en cuanto salga Flex 3 a principios del 2008.<br />
Por lo que veo, mayoritariamente son componentes que ofrecen soluciones a funcionalidades muy concretas:</p>
<ul>
<li>Planning and scheduling displays, such as Gantt charts</li>
<li>Organizational charts</li>
<li>Maps for creating interactive dashboards</li>
<li>entre otros&#8230;</li>
<ul>
Más información y descarga de la beta: <a href="http://www.ilog.com/products/elixir/">http://www.ilog.com/products/elixir/</a></p>]]></content:encoded>
			<wfw:commentRss>http://www.madeinflex.com/2007/11/17/ilog-elixir-para-flex-3/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Arquitectura de Adobe Flex 2 (III)</title>
		<link>http://www.madeinflex.com/2007/09/13/arquitectura-de-adobe-flex-2-iii/</link>
		<comments>http://www.madeinflex.com/2007/09/13/arquitectura-de-adobe-flex-2-iii/#comments</comments>
		<pubDate>Thu, 13 Sep 2007 21:02:19 +0000</pubDate>
		<dc:creator>Carlos Rovira</dc:creator>
				<category><![CDATA[Componentes]]></category>

		<guid isPermaLink="false">http://www.madeinflex.com/2007/09/13/arquitectura-de-adobe-flex-2-iii/</guid>
		<description><![CDATA[<!-- matched  --><!-- final 0 -->Continuamos con nuestro recorrido a través del framework de Flex. En el último capítulo de esta serie comentamos las interioridades del framework para ver como funcionan las cosas &#8220;detrás de las cámaras&#8221; en Flex. En esta nueva entrega veremos como extender UIComponent para realizar nuestros propios componentes. El motivo de extender UIComponent es crear una [...]]]></description>
			<content:encoded><![CDATA[<!-- matched  --><!-- final 0 --><p>Continuamos con nuestro recorrido a través del framework de Flex. En el <a href="http://www.madeinflex.com/2007/05/23/arquitectura-de-adobe-flex-2-ii/">último capítulo</a> de esta serie comentamos las interioridades del framework para ver como funcionan las cosas &#8220;detrás de las cámaras&#8221; en Flex. En esta nueva entrega veremos como extender <em>UIComponent</em> para realizar nuestros propios componentes. El motivo de extender <em>UIComponent</em> es crear una pieza que encaje a la perfección dentro del ciclo de vida de nuestra aplicación y se beneficie de la infraestructura que nos da el framework de Flex. De esta forma conseguiremos un rendimiento óptimo.</p>
<p><span id="more-413"></span></p>
<div class="toc">
<ol>
<li><a href="http://www.madeinflex.com/2007/09/13/arquitectura-de-adobe-flex-2-iii/#toc-creando-componentes-a-partir-de-uicomponent">Creando componentes a partir de <em>UIComponent</em></a></li>
<li><a href="http://www.madeinflex.com/2007/09/13/arquitectura-de-adobe-flex-2-iii/#toc-anadiendo-objetos">Añadiendo objetos</a></li>
<li><a href="http://www.madeinflex.com/2007/09/13/arquitectura-de-adobe-flex-2-iii/#toc-tamano-de-los-componentes">Tamaño de los componentes</a></li>
<li><a href="http://www.madeinflex.com/2007/09/13/arquitectura-de-adobe-flex-2-iii/#toc-cambiando-propiedades">Cambiando propiedades</a></li>
<li><a href="http://www.madeinflex.com/2007/09/13/arquitectura-de-adobe-flex-2-iii/#toc-visualizando-el-componente">Visualizando el componente</a></li>
<li><a href="http://www.madeinflex.com/2007/09/13/arquitectura-de-adobe-flex-2-iii/#toc-conclusion">Conclusión</a></li>
</ol>
</div>
<p>La creación de componentes para Flex es un arte en si mismo y solo la experiencia y el estudio de otros componentes nos llevará a conseguir soluciones realmente interesantes. A su vez, es muy normal que en el día a día, desarrollando con Flex necesitemos alguna funcionalidad inexistente en los componentes base de Flex. Es en ese momento cuando necesitaremos de nuestros conocimientos de la arquitectura de Flex para solventar estos problemas creando nuestras propias extensiones.</p>
<h2 id="toc-creando-componentes-a-partir-de-uicomponent">Creando componentes a partir de <em>UIComponent</em></h2>
<p>A continuación podemos ver el mínimo código necesario para crear un componente en Flex:</p>
<p><object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" codebase="http://fpdownload.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,0,0" width="400" height="200" id="ftf_wp" align="middle">
		  <param name="movie" value="http://www.madeinflex.com/./wp-content/plugins/FlashTextFormatter/ftf_wp.swf" />
		  <param name="quality" value="high" />
		  <param name="scale" value="noscale" />
		  <param name="bgcolor" value="#ffffff" />
		  <param name="flashvars" value="w=400&#038;h=200&#038;file=http://www.madeinflex.com/index.php&#038;ftf=true&#038;postID=413&#038;no=0&#038;def=http://www.madeinflex.com./wp-content/plugins/FlashTextFormatter/definitions/as2.xml&#038;auto=true&#038;" />
		  <embed src="http://www.madeinflex.com/./wp-content/plugins/FlashTextFormatter/ftf_wp.swf" quality="high" scale="noscale" bgcolor="#ffffff" width="400" height="200" name="ftf_wp" align="middle" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer" flashvars="w=400&#038;h=200&#038;file=http://www.madeinflex.com/index.php&#038;ftf=true&#038;postID=413&#038;no=0&#038;def=http://www.madeinflex.com./wp-content/plugins/FlashTextFormatter/definitions/as2.xml&#038;auto=true&#038;" />
		</object></p>
<p>Como podéis ver es bastante sencillo. Ahora bien, de esta forma solo crearíamos un componente en blanco que no haría nada. Ni siquiera veríamos nada en la pantalla. En el constructor podemos añadir escuchadores de eventos que sean necesarios en el componente. Por ejemplo <em>UIComponent</em> aprovecha el constructor para añadir escuchadores para el teclado o el manejador del foco.</p>
<h2 id="toc-anadiendo-objetos">Añadiendo objetos</h2>
<p>Para empezar a añadir contenido al componente podemos hacerlo sobreescribiendo el método <em>createChildren()</em>. Por ejemplo, en el siguiente ejemplo comenzamos llamando al método del componente padre y posteriormente añadimos un campo de texto si este todavía no ha sido creado con anterioridad por alguna super clase:</p>
<p><object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" codebase="http://fpdownload.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,0,0" width="400" height="200" id="ftf_wp" align="middle">
		  <param name="movie" value="http://www.madeinflex.com/./wp-content/plugins/FlashTextFormatter/ftf_wp.swf" />
		  <param name="quality" value="high" />
		  <param name="scale" value="noscale" />
		  <param name="bgcolor" value="#ffffff" />
		  <param name="flashvars" value="w=400&#038;h=200&#038;file=http://www.madeinflex.com/index.php&#038;ftf=true&#038;postID=413&#038;no=1&#038;def=http://www.madeinflex.com./wp-content/plugins/FlashTextFormatter/definitions/as2.xml&#038;auto=true&#038;" />
		  <embed src="http://www.madeinflex.com/./wp-content/plugins/FlashTextFormatter/ftf_wp.swf" quality="high" scale="noscale" bgcolor="#ffffff" width="400" height="200" name="ftf_wp" align="middle" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer" flashvars="w=400&#038;h=200&#038;file=http://www.madeinflex.com/index.php&#038;ftf=true&#038;postID=413&#038;no=1&#038;def=http://www.madeinflex.com./wp-content/plugins/FlashTextFormatter/definitions/as2.xml&#038;auto=true&#038;" />
		</object></p>
<p>Este método será llamado por el framework de forma transparente al crear el componente. Es dentro de este método donde podemos crear cualquier sub componente o skin y añadirlo al displaylist del componente con <em>addChild()</em>.</p>
<h2 id="toc-tamano-de-los-componentes">Tamaño de los componentes</h2>
<p>Seguidamente, es tiempo de definir el método <em>measure()</em>, el cual se encargará de gestionar los tamaños del componente (tamaño mínimo, tamaño por defecto, &#8230;) y de los componentes hijos:</p>
<p><object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" codebase="http://fpdownload.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,0,0" width="400" height="200" id="ftf_wp" align="middle">
		  <param name="movie" value="http://www.madeinflex.com/./wp-content/plugins/FlashTextFormatter/ftf_wp.swf" />
		  <param name="quality" value="high" />
		  <param name="scale" value="noscale" />
		  <param name="bgcolor" value="#ffffff" />
		  <param name="flashvars" value="w=400&#038;h=200&#038;file=http://www.madeinflex.com/index.php&#038;ftf=true&#038;postID=413&#038;no=2&#038;def=http://www.madeinflex.com./wp-content/plugins/FlashTextFormatter/definitions/as2.xml&#038;auto=true&#038;" />
		  <embed src="http://www.madeinflex.com/./wp-content/plugins/FlashTextFormatter/ftf_wp.swf" quality="high" scale="noscale" bgcolor="#ffffff" width="400" height="200" name="ftf_wp" align="middle" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer" flashvars="w=400&#038;h=200&#038;file=http://www.madeinflex.com/index.php&#038;ftf=true&#038;postID=413&#038;no=2&#038;def=http://www.madeinflex.com./wp-content/plugins/FlashTextFormatter/definitions/as2.xml&#038;auto=true&#038;" />
		</object></p>
<p>En el ejemplo indicamos que el tamaño base y mínimo deben ser de 50 pixeles tanto para el ancho como para el alto. Como vimos en el anterior artículo, siempre que queramos recalcular el tamaño del componente, llamaremos a <em>invalidateSize()</em>. NUNCA debemos de llamar directamente a este método. Otro método a tener en cuenta es <em>setActualSize()</em>, el cual se suele usar internamente para indicar el tamaño de los componentes hijos cuando se redibuja un componente.</p>
<h2 id="toc-cambiando-propiedades">Cambiando propiedades</h2>
<p>El siguiente método es <em>commitProperties()</em>. Este se usa para modificar las propiedades de un componente. Gracias a este método nos aseguramos que los cambios en dichas propiedades se hacen en el orden y forma esperado por el programador. Lo normal es que cambiemos una propiedad dentro de un componente y, de paso, modifiquemos una variable flag de forma que en este método hagamos algún tipo de procesamiento necesario al cambiar la propiedad. El método de invalidación que debemos de usar para llamar a este método es <em>invalidateProperties()</em>.</p>
<p><object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" codebase="http://fpdownload.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,0,0" width="400" height="200" id="ftf_wp" align="middle">
		  <param name="movie" value="http://www.madeinflex.com/./wp-content/plugins/FlashTextFormatter/ftf_wp.swf" />
		  <param name="quality" value="high" />
		  <param name="scale" value="noscale" />
		  <param name="bgcolor" value="#ffffff" />
		  <param name="flashvars" value="w=400&#038;h=200&#038;file=http://www.madeinflex.com/index.php&#038;ftf=true&#038;postID=413&#038;no=3&#038;def=http://www.madeinflex.com./wp-content/plugins/FlashTextFormatter/definitions/as2.xml&#038;auto=true&#038;" />
		  <embed src="http://www.madeinflex.com/./wp-content/plugins/FlashTextFormatter/ftf_wp.swf" quality="high" scale="noscale" bgcolor="#ffffff" width="400" height="200" name="ftf_wp" align="middle" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer" flashvars="w=400&#038;h=200&#038;file=http://www.madeinflex.com/index.php&#038;ftf=true&#038;postID=413&#038;no=3&#038;def=http://www.madeinflex.com./wp-content/plugins/FlashTextFormatter/definitions/as2.xml&#038;auto=true&#038;" />
		</object></p>
<p>Los flags nos permiten optimizar el rendimiento de este método de forma que solo se ejecuten determinadas partes del mismo. Este método es llamado justo antes de calcular el tamaño del componente y el redibujado del mismo. También es el lugar más apropiado para crear y eliminar subcomponentes de acuerdo con cambios determinados en las propiedades.</p>
<h2 id="toc-visualizando-el-componente">Visualizando el componente</h2>
<p>Ha llegado el momento de visualizar el componente. Este es el método que tiene toda la carga de trabajo a la hora de representar gráficamente el estado del componente. Como cabría de esperar, NO debemos de llamarlo directamente. Debemos de invocar <em>invalidateDisplayList()</em> de forma que marquemos el componente para su redibujado en el próximo frame.</p>
<p><object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" codebase="http://fpdownload.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,0,0" width="400" height="200" id="ftf_wp" align="middle">
		  <param name="movie" value="http://www.madeinflex.com/./wp-content/plugins/FlashTextFormatter/ftf_wp.swf" />
		  <param name="quality" value="high" />
		  <param name="scale" value="noscale" />
		  <param name="bgcolor" value="#ffffff" />
		  <param name="flashvars" value="w=400&#038;h=200&#038;file=http://www.madeinflex.com/index.php&#038;ftf=true&#038;postID=413&#038;no=4&#038;def=http://www.madeinflex.com./wp-content/plugins/FlashTextFormatter/definitions/as2.xml&#038;auto=true&#038;" />
		  <embed src="http://www.madeinflex.com/./wp-content/plugins/FlashTextFormatter/ftf_wp.swf" quality="high" scale="noscale" bgcolor="#ffffff" width="400" height="200" name="ftf_wp" align="middle" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer" flashvars="w=400&#038;h=200&#038;file=http://www.madeinflex.com/index.php&#038;ftf=true&#038;postID=413&#038;no=4&#038;def=http://www.madeinflex.com./wp-content/plugins/FlashTextFormatter/definitions/as2.xml&#038;auto=true&#038;" />
		</object></p>
<p>Como podéis ver en el ejemplo, primero llamamos al mismo método de la super clase. A partir de esta linea podemos usar este método para dibujar lo que creamos conveniente (en el ejemplo dibujamos un rectángulo), redimendionar sub componentes, cambiar estilos y, en general, todo lo que trate de cambiar la apariencia visual del componente.</p>
<h2 id="toc-conclusion">Conclusión</h2>
<p>Ahora ya tenemos la información básica suficiente para crear un componente desde cero. Todavía quedan otros aspectos a tener en cuenta (estilos, skinning, manejo del foco y del teclado, etc&#8230;). Pero en estos momentos ya sabemos cuales son los métodos que el framework de flex utiliza internamente para hacer su magia y podemos empezar a crear componentes que actúen dentro del sistema como si de un componente del framework se tratara.</p>
<p>En el siguiente artículo pondremos todo lo visto en práctica a través de un ejemplo con un componente real extendiendo de otro ya existente para reutilizar su funcionalidad. De esta forma podremos demostrar las ventajas de conocer la arquitectura de componentes de Flex y reutilizar la funcionalidad ya creada por los ingenieros de Adobe.</p>]]></content:encoded>
			<wfw:commentRss>http://www.madeinflex.com/2007/09/13/arquitectura-de-adobe-flex-2-iii/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>

