<?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; AIR (Apollo)</title>
	<atom:link href="http://www.madeinflex.com/categoria/air/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.madeinflex.com</link>
	<description>Creando Soluciones RIA...</description>
	<lastBuildDate>Fri, 10 Sep 2010 05:04:37 +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>Jugando con AIR 2 beta 2</title>
		<link>http://www.madeinflex.com/2010/03/28/jugando-con-air-2-beta-2/</link>
		<comments>http://www.madeinflex.com/2010/03/28/jugando-con-air-2-beta-2/#comments</comments>
		<pubDate>Sun, 28 Mar 2010 17:38:03 +0000</pubDate>
		<dc:creator>Sergi Dote Teixidor</dc:creator>
				<category><![CDATA[AIR (Apollo)]]></category>
		<category><![CDATA[Artículos]]></category>

		<guid isPermaLink="false">http://www.madeinflex.com/?p=1243</guid>
		<description><![CDATA[<!-- matched  --><!-- final 0 -->Hemos hablado en diferentes posts de las caractarísticas de lo que será AIR 2. De momento ya tenemos disponible la beta 2 y con ésta he querido experimentar algunas de sus características. En este artículo veremos algunas de estas características mediante una aplicación de ejemplo y así probar parte de lo que nos aportará la [...]]]></description>
			<content:encoded><![CDATA[<!-- matched  --><!-- final 0 --><p>Hemos hablado en diferentes posts de las caractarísticas de lo que será AIR 2. De momento ya tenemos disponible la beta 2 y con ésta he querido experimentar algunas de sus características. En este artículo veremos algunas de estas características mediante una aplicación de ejemplo y así probar parte de lo que nos aportará la nueva versión de AIR.</p>
<p><span id="more-1243"></span></p>
<h2 id="toc-introduccion"><strong>Introducción</strong></h2>
<p>Hemos posteado anteriormente este <a href="http://www.madeinflex.com/2009/11/17/disponibles-las-betas-de-air-2-y-flash-player-10-1/">artículo</a> en el que comentamos lo que nos aporta AIR 2. En la beta 2 de AIR 2, las mejoras que se recogen, a &#8220;grosso modo&#8221;, son las siguientes:</p>
<ul>
<li>Mejoras en el Print Job para tener un control mayor de la impresión desde AIR.</li>
<li>Sockets TLS/SSL, que nos permiten conectar a servidores que requieran TLSv1 o SSLv3.</li>
<li>Soporte para acceso a Flash, así podremos reproducir contenido protegido.</li>
<li>Mejoras en la API IME, diseñada para usar con el nuevo Flash Text Engine (FTE).</li>
</ul>
<h2 id="toc-informacion-descarga-e-instalacion-de-la-beta-2"><strong>Información, descarga e instalación de la beta 2</strong></h2>
<p>En el siguiente <a href="http://labs.adobe.com/wiki/index.php/AIR_2:Release_Notes#New_Features_in_AIR_2__beta_2">link</a> encontrareis la página de AIR 2, con toda la información que necesiteis y explica como descargar e instalar en cualquier sistema operativo.</p>
<h2 id="toc-probando-air-2"><strong>Probando AIR 2</strong></h2>
<p>Para probar algunas de las características de AIR 2, he desarrollado una aplicación que contiene un tab navigator. Cada uno de sus tabs contiene una de las posibilidades de AIR 2 analizadas. Aquí os dejo el proyecto para que lo podais probar y trastear. Descomprimidlo y tendreis el proyecto FXP para importar directamente:<br />
<a href="http://www.madeinflex.com/wp-content/uploads/2010/03/AIR2Enhancements.fxp_.zip">AIR2Enhancements.fxp</a></p>
<h2 id="toc-deteccion-de-soportes-de-almacenamiento-y-apertura-con-la-aplicacion-por-defecto">Detección de soportes de almacenamiento y apertura con la aplicación por defecto.</h2>
<p>Algo que encontrábamos a faltar hasta ahora en AIR era la posibilidad de acceder a dispositivos de almacenamiento. AIR 2 es capaz de detectar estos dispositivos y acceder a ellos. Para ello, debemos tener en cuenta 2 clases:</p>
<ul>
<li>StorageVolumeInfo: Es una clase singleton que reconoce los cambios en estos dispositivos. Cuando hay algun cambio, lanza un evento de tipo StorageVolumeChangeEvent. Podemos controlar dos tipos de eventos: storageVolumeMount y storageVolumeUnmount.</li>
<li>StorageVolume: encapsula la información del dispositivo.</li>
</ul>
<p>Con estas clases podremos ver la información que nos apetezca del dispositivo.</p>
<p>Por otra parte, la API de la clase File tiene un método llamado openWithDefaultApplication(), que nos permite abrir el fichero con el programa que tiene asignado por defecto el sistema operativo. </p>
<p>En la siguiente imagen vemos el primer tab de la aplicación que muestra los soportes de almacenamiento. Nos permite navegar por todos ellos y también podremos abrir los documentos con la aplicación por defecto:<br />
<a href="http://www.madeinflex.com/wp-content/uploads/2010/03/storage_volumes.png"><img src="http://www.madeinflex.com/wp-content/uploads/2010/03/storage_volumes-300x229.png" alt="storage_volumes" title="storage_volumes" width="300" height="229" class="aligncenter size-medium wp-image-1271" /></a></p>
<h2 id="toc-file-promises">File promises</h2>
<p>File promises es una nueva API que nos permite acceder a ciertas URL&#8217;s y arrastrarlas fuera de la aplicación AIR para que se guarden en nuestra máquina local. La clase URLFilePromise se encarga de hacer esta operación mediante la implementación de la interface IFilePromise y usando URLStream y URLRequest.</p>
<p>Para crear una file promise, mediante la clase URLFilePromise, pasamos al clipboard el array de file promises deseadas. Cuando se termina el proceso de drag and drop hacia la máquina local, el runtime descarga los datos para cada file promise. A continuación vemos una imagen de ejemplo de nuestra aplicación:<br />
<a href="http://www.madeinflex.com/wp-content/uploads/2010/03/file_promisses.png"><img src="http://www.madeinflex.com/wp-content/uploads/2010/03/file_promisses-300x193.png" alt="file_promisses" title="file_promisses" width="300" height="193" class="aligncenter size-medium wp-image-1274" /></a></p>
<h2 id="toc-native-process-execution">Native process execution</h2>
<p>Con esta API se nos permite interactuar con procesos nativos del sistema operativo. Para realizarlo, las siguientes clases nos dan esta capcidad:</p>
<ul>
<li>NativeProcess: tiene la capacidad de lanzar procesos en el sistema operativo en el que se alberga la aplicación.</li>
<li>NativeProcessStartupInfo: proporciona información básica que nos servirá para lanzar un proceso en el sistema  operativo.</li>
<li>NativeProcessExitEvent: este evento se lanza  una vez termina el proceso. Puede ser que no se lance nunca si es que estamos ejecutando un proceso contenido en la misma aplicación AIR.</li>
</ul>
<p>Para probar esta característica y debido a que estamos usando una versión beta de AIR 2, debemos insertar este tag en el fichero descriptor de la aplicación: </p>
<p><a href="http://www.madeinflex.com/wp-content/uploads/2010/03/Captura-de-pantalla-2010-03-25-a-las-22.53.50.png"><img src="http://www.madeinflex.com/wp-content/uploads/2010/03/Captura-de-pantalla-2010-03-25-a-las-22.53.50.png" alt="Captura de pantalla 2010-03-25 a las 22.53.50" title="Captura de pantalla 2010-03-25 a las 22.53.50" width="410" height="39" class="aligncenter size-full wp-image-1289" /></a></p>
<p>He codificado la aplicación de manera que controle en qué sistema operativo nos encontramos y sólo nos deje lanzar una de las aplicaciones, la que soporte nuestro SO. Aquí va una captura para ver como se lanza una aplicación nativa:</p>
<p><a href="http://www.madeinflex.com/wp-content/uploads/2010/03/native_process.png"><img src="http://www.madeinflex.com/wp-content/uploads/2010/03/native_process-300x230.png" alt="native_process" title="native_process" width="300" height="230" class="aligncenter size-medium wp-image-1280" /></a> </p>
<h2 id="toc-network-interfaces">Network interfaces</h2>
<p>Un ordenador tiene diferentes interficies de red. Con AIR 2.0 podemos acceder a esta información mediante la clase NetworkInfo. Esta clase nos permite obtener información como por ejemplo: la IP local y las interficies de red. En la siguiente imagen vemos el resultado:</p>
<p><a href="http://www.madeinflex.com/wp-content/uploads/2010/03/network_interfaces.png"><img src="http://www.madeinflex.com/wp-content/uploads/2010/03/network_interfaces-300x224.png" alt="network_interfaces" title="network_interfaces" width="300" height="224" class="aligncenter size-medium wp-image-1284" /></a></p>
<h2 id="toc-resolucion-de-dns">Resolución de DNS</h2>
<p>Como sabemos, cada dominio de la red tiene una IP asociada. Un DNS hace la conversión entre los nombres de dominio y las direcciones IP.</p>
<p>AIR 2.0 nos proporciona una DNSResolver, la cual nos permite preguntar a DNS. Cuando se obtiene la información, se nos notifica mediante un evento de tipo DNSResolverEvent. </p>
<p>Una IP puede ser de tipo IPv4 (32-bits) o IPv6 (64-bits). El AIR actual sólo soporta IPv4, pero el nuevo AIR 2.0 reconoce IP&#8217;s de tipo.</p>
<p>Hay diferentes tipos de registros en los DNS, AIR 2.0 soporta los siguientes:</p>
<ul>
<li>ARecord: Esta clase nos devuleve información de direcciones de tipo 64-bits IPv6. Los registros AAAA se suelen usar para convertir hostnames en direcciones IP. </li>
<li>AAAARecord: nos devuelve información sobre direcciones de tipo 32-bits IPv4.</li>
<li>MXRecord: nos proporciona información sobre el mapeo del nombre de un dominio hacia una lista de intercambio de mail.</li>
<li>SRVRecord: nos  devuelve la información de localización de servicios sobre los registros SRV. Se utiliza para los nuevos protocolos en lugar de la creación de protocolos específicos.</li>
<li>ResourceRecord: clase para encapsular la información del registro DNS.</li>
<li>PTRRecord: nos permite acceder a la información de registros PTR. Los registros PTR se utilizan normalmente para la realización de consultas DNS inversas.</li>
</ul>
<p>A continuación una muestra de una consulta que hace nuestra aplicación:<br />
<a href="http://www.madeinflex.com/wp-content/uploads/2010/03/DNS_lookup.png"><img src="http://www.madeinflex.com/wp-content/uploads/2010/03/DNS_lookup-300x223.png" alt="DNS_lookup" title="DNS_lookup" width="300" height="223" class="aligncenter size-medium wp-image-1287" /></a></p>
<h2 id="toc-conclusion"><strong>Conclusión</strong></h2>
<p>Hemos visto algunas de las características que nos proporcionan las betas de AIR 2.0. Hay muchísimas más características que dejo que experimenteis personalmente. Encontrareis bastante información y ejemplos por internet.<br />
Seguiremos probando betas hasta que salga la release oficial de AIR 2.0.</p>]]></content:encoded>
			<wfw:commentRss>http://www.madeinflex.com/2010/03/28/jugando-con-air-2-beta-2/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Adobe AIR 2 beta 2</title>
		<link>http://www.madeinflex.com/2010/02/02/adobe-air-beta-2/</link>
		<comments>http://www.madeinflex.com/2010/02/02/adobe-air-beta-2/#comments</comments>
		<pubDate>Tue, 02 Feb 2010 17:59:45 +0000</pubDate>
		<dc:creator>Edgar Parada</dc:creator>
				<category><![CDATA[AIR (Apollo)]]></category>
		<category><![CDATA[Noticias]]></category>

		<guid isPermaLink="false">http://www.madeinflex.com/?p=1183</guid>
		<description><![CDATA[<!-- matched  --><!-- final 0 -->El día de hoy se anunció en Adobe Labs, AIR 2 beta 2. Es importante darle un vistazo puesto que las aplicaciones compiladas con beta 1 ya no podrán ejecutarse con el runtime de AIR 2 beta 2, así mismo hay algunas características importantes en esta versión entre las que destacan&#8230;


Interacción Mejorada con la Impresora: [...]]]></description>
			<content:encoded><![CDATA[<!-- matched  --><!-- final 0 --><p>El día de hoy se anunció en Adobe Labs, <a href="http://labs.adobe.com/technologies/air2/">AIR 2 beta 2</a>. Es importante darle un vistazo puesto que las aplicaciones compiladas con beta 1 ya no podrán ejecutarse con el runtime de AIR 2 beta 2, así mismo hay algunas características importantes en esta versión entre las que destacan&#8230;<br />
<span id="more-1183"></span></p>
<ul>
<li><strong>Interacción Mejorada con la Impresora:</strong> Nuevo soporte de impresión que permite un control más fino sobre la manera en que el contenido se imprime desde una aplicación AIR, incluyendo la <em>elección de impresora, tamaño del papel y número de copias. </em><br />
Una nueva API que permite recuperar información adicional de la impresión, como el área a imprimir, los colores y status de actividad. También es posible mandar a imprimir sin mostrar el diálogo de imprimir.</li>
<li><strong>Soporte para comunicación de sockets TLS/SSL:</strong> Ahora es posible conectarse a un servidor que requiere comunicaciones por socket tipo <em>TLSv1</em> o <em>SSLv3</em>.</li>
<li><strong>API IME y Mejoras en la Entrada de Texto:</strong> Interesantes mejoras para soportar la entrada de texto con software IME mediante un API diseñada para utilizar el Flash Text Engine.</li>
</ul>
<p>También hay algunas <a href="http://labs.adobe.com/technologies/air2/samples/">aplicaciones de ejemplo</a> que podemos ir descargando para revisar a detalle estas características.</p>]]></content:encoded>
			<wfw:commentRss>http://www.madeinflex.com/2010/02/02/adobe-air-beta-2/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>codeDraw: Editor WYSIWYG vectorial basado en Flex</title>
		<link>http://www.madeinflex.com/2009/07/19/codedraw-editor-wysiwyg-vectorial-basado-en-flex/</link>
		<comments>http://www.madeinflex.com/2009/07/19/codedraw-editor-wysiwyg-vectorial-basado-en-flex/#comments</comments>
		<pubDate>Sun, 19 Jul 2009 20:41:20 +0000</pubDate>
		<dc:creator>Jorge A. Díaz Gutiérrez</dc:creator>
				<category><![CDATA[AIR (Apollo)]]></category>

		<guid isPermaLink="false">http://www.madeinflex.com/2009/07/19/codedraw-editor-wysiwyg-vectorial-basado-en-flex/</guid>
		<description><![CDATA[<!-- matched  --><!-- final 0 --> 
Hola comunidad de madeInFlex, este es mi primer post y lo hago para presentarles un pequeño proyecto OpenSource que comencé a inicios de este año. Su nombre es codeDraw y no es más que un editor visual para crear gráficos vectoriales para aplicaciones Flash, Flex, MTASC y haXe. Con él podemos &#8220;crear MovieClips&#8221; gráficamente y [...]]]></description>
			<content:encoded><![CDATA[<!-- matched  --><!-- final 0 --><p style="text-align: center"> <img src="http://codedraw.wordpress.com/files/2009/07/codedrawlogo1.jpg" width="88" border="0" height="124" /></p>
<p>Hola comunidad de madeInFlex, este es mi primer post y lo hago para presentarles un pequeño proyecto OpenSource que comencé a inicios de este año. Su nombre es <a href="http://codedraw.wordpress.com" target="_blank"><strong>codeDraw</strong></a> y no es más que un editor visual para crear gráficos vectoriales para aplicaciones Flash, Flex, MTASC y haXe. Con él podemos &#8220;crear MovieClips&#8221; gráficamente y luego exportar su código a una clase AS2.0/3.0 y utilizarlo en nuestros proyectos, de ahí su nombre. Está <strong>desarrollado completamente sobre  Flex y AIR</strong>, por lo que, en esencia, utiliza ActionScript para generar ActionScript.<br />
<span id="more-870"></span></p>
<p style="text-align: center"><img src="http://codedraw.wordpress.com/files/2009/07/postmadeinflex-3.jpg" border="0" /></p>
<p>Quisiera orientar este post a exponer, de manera resumida, aspectos técnicos del mismo y así compartir algunas ideas:<br />
codeDraw no fue desarrollado sobre ninguno de los frameworks populares de MVC para Flex (Cairngorm, Swiz, PureMVC, etc.). Puede parecer algo alocado, pero se le desarrolló uno propio bastante sencillo. De igual forma, los tradicionales son mucho más robustos y el objetivo no es recomendar hacer uno, pero si aclarar el detalle para mejor entendimiento del código de la solución.</p>
<p>codeDraw incorpora un pequeño núcleo para la gestión de los objetos gráficos en tiempo de ejecución. Sucede que, históricamente, los desarrolladores de ActionScript que necesitan construir gráficos utilizando los clásicos métodos &#8220;lineTo&#8221; y &#8220;curveTo&#8221;, deben crear sus propios métodos de control de la información de los trazos. De esta forma, crearlos nuevamente, con las características o posiciones actualizadas, resulta mucho más factible.</p>
<p style="text-align: center"><img src="http://codedraw.wordpress.com/files/2009/07/postmadeinflex.jpg" title="codeDraw core packagge" alt="codeDraw core packagge" width="459" border="0" height="367" /></p>
<p>Los paneles fueron desarrollados en módulos Flex e incorporados al principal utilizando el MVC. Actualmente codeDraw cuenta con 4: herramientas de dibujo y selección, panel de propiedades, capas y filtros.</p>
<p>Los documentos se almacenan en unos ficheros XML de extensión (codeDraw XML).</p>
<p>A continuación les dejo algunos screenshots, generalmente ilustran más que muchos parrafos &#8230;  :smile:</p>
<p style="text-align: center"><a href="http://codedraw.files.wordpress.com/2009/07/codedrawsplash.jpg" target="_blank"><img src="http://codedraw.files.wordpress.com/2009/07/codedrawsplash.jpg?w=300&amp;h=187" width="300" border="0" height="187" /></a></p>
<p style="text-align: center">&nbsp;</p>
<p style="text-align: center"><a href="http://codedraw.files.wordpress.com/2009/07/codedraw_welcomescreen.jpg" target="_blank"><img src="http://codedraw.files.wordpress.com/2009/07/codedraw_welcomescreen.jpg?w=300&amp;h=225" width="300" border="0" height="224" /></a></p>
<p style="text-align: center">&nbsp;</p>
<p style="text-align: center"><a href="http://codedraw.files.wordpress.com/2009/07/codedraw_shapes.jpg" target="_blank"><img src="http://codedraw.files.wordpress.com/2009/07/codedraw_shapes.jpg?w=300&amp;h=225" width="300" border="0" height="224" /></a></p>
<p style="text-align: center">&nbsp;</p>
<p style="text-align: center"><a href="http://codedraw.files.wordpress.com/2009/07/codedraw_drawstage.jpg" target="_blank"><img src="http://codedraw.files.wordpress.com/2009/07/codedraw_drawstage.jpg?w=300&amp;h=225" border="0" /></a></p>
<p style="text-align: center">&nbsp;</p>
<p style="text-align: center"><a href="http://codedraw.files.wordpress.com/2009/07/codedraw_generatecode.jpg" target="_blank"><img src="http://codedraw.files.wordpress.com/2009/07/codedraw_generatecode.jpg?w=300&amp;h=225" width="300" height="224" /></a></p>
<p>codeDraw aún se encuentra en un estado de desarrollo bastante joven. Faltan muchos bugs por revisar, balance y énfasis en la usabilidad del mismo, pero otras prioridades me han obligado a posponer su desarrollo por un tiempo. Por lo pronto, tengo pensado concluir la documentación del código y finalmente publicarlo a todos aquellos que lo puedan necesitar o estén interesados en contribuir.</p>
<ul>
<li><a href="http://codedraw.wordpress.com" target="_blank">Más información, screenshots, etc. en el Blog oficial</a></li>
<li><a href="https://sourceforge.net/projects/codedraw/files/codedraw/codeDraw.rar/download" target="_blank">Descargar codeDraw 0.5 Beta </a></li>
</ul>]]></content:encoded>
			<wfw:commentRss>http://www.madeinflex.com/2009/07/19/codedraw-editor-wysiwyg-vectorial-basado-en-flex/feed/</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
		<item>
		<title>Nueva Release de Adobe AIR 1.5.1</title>
		<link>http://www.madeinflex.com/2009/02/27/nueva-release-de-adobe-air-151/</link>
		<comments>http://www.madeinflex.com/2009/02/27/nueva-release-de-adobe-air-151/#comments</comments>
		<pubDate>Fri, 27 Feb 2009 10:00:59 +0000</pubDate>
		<dc:creator>Jose Luis Ugía González</dc:creator>
				<category><![CDATA[AIR (Apollo)]]></category>
		<category><![CDATA[Flex Builder]]></category>
		<category><![CDATA[Noticias]]></category>

		<guid isPermaLink="false">http://www.madeinflex.com/2009/02/27/nueva-release-de-adobe-air-151/</guid>
		<description><![CDATA[<!-- matched  --><!-- final 0 -->Queridos compañeros:
La nueva release de Adobe AIR está en las calles.
Si bien es cierto que esta actualización no representa una gran mejora en lo que respecta a nuevas funcionalidades, si que soluciona una buena lista de bugs , con los que estoy seguro mas de uno os habéis encontrado alguna vez.

Destacaría entre ellos:
-Mejora de uso [...]]]></description>
			<content:encoded><![CDATA[<!-- matched  --><!-- final 0 --><p>Queridos compañeros:</p>
<p>La nueva release de <a href="http://get.adobe.com/air/" title="Descarga de Adobe AIR" target="_blank">Adobe AIR</a> está en las calles.<br />
Si bien es cierto que esta actualización no representa una gran mejora en lo que respecta a nuevas funcionalidades, si que soluciona una buena <a href="http://www.adobe.com/support/documentation/en/air/1_5_1/releasenotes_developers.html#fixed_bugs" title="Lista de bugs" target="_blank">lista de bugs</a> , con los que estoy seguro mas de uno os habéis encontrado alguna vez.</p>
<p><span id="more-792"></span></p>
<p>Destacaría entre ellos:</p>
<p>-Mejora de uso de memoria en reproducción de video</p>
<p>-Evitar que nuestra aplicación falle y se nos cierre por tener activado el AdBlock de Safari en ciertas peticiones.</p>
<p>-Errores desinstalando AIR Apps (este último no me importaba <img src='http://www.madeinflex.com/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' />   ) , entre otros..</p>
<p>Esta nueva versión es la 1.5.1, y para los que tenéis aplicaciones desarrolladas en AIR, como sabéis, debéis actualizar vuestro descriptor de aplicación a la versión <strong>1.5.1</strong> para poder usar la nueva API introducida, <a href="http://blogs.adobe.com/simplicity/2009/02/invokeevent_reason_in_air_1_5_1.html" title="InvokeEvent" target="_blank">InvokeEvent.reason</a>, muy útil en mi opinión ya que nos permite conocer, no solo cuando ha sido lanzada nuestra aplicación, sino desde donde (login o standard).<br />
Para disfrutar de las demás mejoras no es necesario actualizar la versión en vuestro descriptor.<br />
Así pues, a seguir desarrollando mas y mejor.</p>
<p>Un saludo a todos.</p>]]></content:encoded>
			<wfw:commentRss>http://www.madeinflex.com/2009/02/27/nueva-release-de-adobe-air-151/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Comienza el concurso mifAIRContest&#8217;08</title>
		<link>http://www.madeinflex.com/2008/08/28/comienza-el-concurso-mifaircontest08/</link>
		<comments>http://www.madeinflex.com/2008/08/28/comienza-el-concurso-mifaircontest08/#comments</comments>
		<pubDate>Thu, 28 Aug 2008 20:08:26 +0000</pubDate>
		<dc:creator>Raul Diaz</dc:creator>
				<category><![CDATA[AIR (Apollo)]]></category>
		<category><![CDATA[AUG]]></category>
		<category><![CDATA[Eventos]]></category>

		<guid isPermaLink="false">http://www.madeinflex.com/2008/08/28/comienza-el-concurso-mifaircontest08/</guid>
		<description><![CDATA[<!-- matched  --><!-- final 0 -->Me complace anunciar el inicio del primer concurso promovido por MadeInFlex: mifAIRContest&#8217;08.
La idea nació el 31 de Marzo en el pasado &#8220;onAIRTour Europe 2008&#8243;, desde entonces y cuando nuestro trabajo nos lo ha permitido, lo hemos estado cocinando con todo cariño para vosotros y&#8230; no creáis que lleva pocos ingredientes y sí muchos los cocineros [...]]]></description>
			<content:encoded><![CDATA[<!-- matched  --><!-- final 0 --><p>Me complace anunciar el inicio del primer concurso promovido por MadeInFlex: <strong>mifAIRContest&#8217;08</strong>.</p>
<p>La idea nació el 31 de Marzo en el pasado &#8220;onAIRTour Europe 2008&#8243;, desde entonces y cuando nuestro trabajo nos lo ha permitido, lo hemos estado cocinando con todo cariño para vosotros y&#8230; no creáis que lleva pocos ingredientes y sí muchos los cocineros que han intervenido.</p>
<p>Para hacerlo aún más jugoso hemos hecho coincidir la entrega de premios en el tercer <strong>MIF OnSite</strong>, esta vez tendrá lugar en Madrid y os recomiendo no perdéroslo porque las charlas preparadas van a ser magníficas.</p>
<p>En el siguiente enlace tenéis toda la información sobre las bases del concurso así como de los premios.</p>
<p align="center"><a href="http://www.madeinflex.com/aug/concurso-mif-air" title="MIF AIR CONTEST Ã¢â‚¬Ëœ08" border="0"><img src="http://www.madeinflex.com/wp-content/uploads/2008/08/logo_mifaircontest.png" alt="MIF AIR CONTEST Ã¢â‚¬Ëœ08"/></a></p>
<p>Anímate a participar, aunque no ganes ningún premio toda la comunidad Flex te lo agracederá puesto que todos los fuentes de las aplicaciones presentadas serán publicados para así poder aprender todos un poquito más.</p>
<p>Recordar que MIF lo hacemos entre todos y sin vuestra colaboración no sería posible realizar este tipo de concursos y eventos.</p>]]></content:encoded>
			<wfw:commentRss>http://www.madeinflex.com/2008/08/28/comienza-el-concurso-mifaircontest08/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>AIR firstrun manager</title>
		<link>http://www.madeinflex.com/2008/06/18/air-firstrun-manager/</link>
		<comments>http://www.madeinflex.com/2008/06/18/air-firstrun-manager/#comments</comments>
		<pubDate>Wed, 18 Jun 2008 07:58:57 +0000</pubDate>
		<dc:creator>Joan Garnet</dc:creator>
				<category><![CDATA[AIR (Apollo)]]></category>

		<guid isPermaLink="false">http://www.madeinflex.com/2008/06/18/air-firstrun-manager/</guid>
		<description><![CDATA[<!-- matched  --><!-- final 0 -->Las aplicaciones hechas con AIR tienen la peculiaridad que se instalan.
Una vez instaladas, estas aplicaciones, al igual que cualquier otra aplicación de escritorio, a menudo es necesario que modifiquen o creen archivos para mantener preferencias, configuraciones, logs, etc...
En este artículo se muestra un sistema que permite automatizar toda esta gestión acorde con los requisitos que [...]]]></description>
			<content:encoded><![CDATA[<!-- matched  --><!-- final 0 --><p><img src='http://www.madeinflex.com/wp-content/uploads/2008/06/flex3air.png' alt='flex3 - air' align="left" />Las aplicaciones hechas con AIR tienen la peculiaridad que se instalan.<br />
Una vez instaladas, estas aplicaciones, al igual que cualquier otra aplicación de escritorio, a menudo es necesario que modifiquen o creen archivos para mantener preferencias, configuraciones, logs, etc...<br />
En este artículo se muestra un sistema que permite automatizar toda esta gestión acorde con los requisitos que tienen las aplicaciones de escritorio en relación al sistema operativo que las alberga.</p>
<p><span id="more-694"></span></p>
<div class="toc">
<ol>
<li><a href="http://www.madeinflex.com/2008/06/18/air-firstrun-manager/#toc-air-sandboxes">AIR Sandboxes</a></li>
<li><a href="http://www.madeinflex.com/2008/06/18/air-firstrun-manager/#toc-directorio-de-almacenamiento">Directorio de almacenamiento</a></li>
<li><a href="http://www.madeinflex.com/2008/06/18/air-firstrun-manager/#toc-carpeta-firstrun">Carpeta "firstrun"</a></li>
<li><a href="http://www.madeinflex.com/2008/06/18/air-firstrun-manager/#toc-implementacion-del-sistema">Implementación del sistema</a></li>
<li><a href="http://www.madeinflex.com/2008/06/18/air-firstrun-manager/#toc-descarga-del-ejemplo">Descarga del ejemplo</a></li>
<li><a href="http://www.madeinflex.com/2008/06/18/air-firstrun-manager/#toc-referencias">Referencias</a></li>
</ol>
</div>
<h2 id="toc-air-sandboxes">AIR Sandboxes</h2>
<p>En AIR disponemos de varios sandboxes:</p>
<ol>
<li><em>Application sandbox</em>: Es el directorio dónde se ha instalado la aplicación. Al ser un sandbox con privilegios altamente sensibles a la seguridad del sistema se restringe su uso únicamente a la aplicación en si (<a href="http://livedocs.adobe.com/air/1/devappshtml/help.html?content=security_3.html">más info</a>).</li>
<li><em>Non-application sandbox</em>: Todo el contenido que no está dentro del <em>Application sandbox</em> está en este sandbox.</li>
</ol>
<p>El <em>Application sandbox</em> lo pone dificil para realizar operaciones con archivos en el directorio de instalación de la aplicación AIR, de hecho es una mala práctica ya que si lo hiciéramos, por ejemplo, no tendríamos la oportunidad de mantener dichos archivos a través de las distintas releases de nuestra aplicación.<br />
Es por esto que muchas aplicaciones utilizan una convención a nivel de sistema operativo que es guardar la información en un directorio de almacenamiento, el llamado <em>storage directory</em>.</p>
<h2 id="toc-directorio-de-almacenamiento">Directorio de almacenamiento</h2>
<p>El directorio de almacenamiento es el lugar idóneo para guardar toda la información generada por la aplicación. Este directorio en diferentes sistemas operativos está situado en lugares distintos, es por eso que la API de acceso al sistema de archivos de AIR nos abstrae de ello mediante diferentes sistemas:</p>
<table width="100%" border="1" cellpadding="2" style="font-size:10px;">
<tr bgcolor="#dddddd">
<td> </td>
<td>File</td>
<td>URI</td>
</tr>
<tr>
<td bgcolor="#dddddd">Directorio de instalación</td>
<td>File.applicationDirectory</td>
<td>app:/</td>
</tr>
<tr>
<td bgcolor="#dddddd">Directorio de almacenamiento</td>
<td>File.applicationStorageDirectory</td>
<td>app-storage:/</td>
</tr>
<tr>
<td bgcolor="#dddddd">Escritorio</td>
<td>File.desktopDirectory</td>
<td>--</td>
</tr>
<tr>
<td colspan="3" bgcolor="#dddddd">etc... (<a href="http://livedocs.adobe.com/flex/3/langref/flash/filesystem/File.html">más info...</a>)</td>
</tr>
</table>
<p>&nbsp;</p>
<h2 id="toc-carpeta-firstrun">Carpeta "firstrun"</h2>
<p>Teniendo un directorio de almacenamiento y habiendo visto que lo tenemos disponible de forma sencilla a través de las APIs de AIR vamos a ver cómo hacer posible crear un sistema que nos permita automatizar la gestión de archivos externos a la aplicación y que además nos ofrezca la oportunidad de mantenerlos a través de las distintas versiones de nuestra aplicación. Es decir, si hago una nueva release quiero que algunos (o todos) de estos archivos se borren o modifiquen para que estén a punto para ser usados con las nuevas prestaciones que la nueva versión ofrece.</p>
<p>Para ello cuando diseñamos nuestra aplicación tenemos que tener en cuenta que habrá un directorio que no va a estar en el lugar de instalación de la aplicación.<br />
Una estrategia que he tomado prestada de ver comose instala Flash es crear un directorio <strong>firstrun</strong>. Este directorio va a contener un <em>template</em> de archivos y directorios que en el momento de ejecutar la aplicación por primera vez se va a mover al directorio de almacenamiento.<br />
En la aplicación de ejemplo en Flex Builder tengo esta estructura:<br />
<img src='http://www.madeinflex.com/wp-content/uploads/2008/06/firstrun_estructura.png' alt='Estructura de directorios del proyecto' /><br />
Como se puede ver tengo una carpeta <strong>firstrun</strong> con algo de contenido. Es este contenido el que se va a mover al <em>storage folder</em>.</p>
<h2 id="toc-implementacion-del-sistema">Implementación del sistema</h2>
<p>Ahora que tenemos todo el sistema montado la única cosa que queda es implementar la lógica que gestione el movimiento de archivos de un lado al otro de forma que nos podamos despreocupar del asunto.<br />
Para ello vamos a servirnos de la clase <code>com.joangarnet.air.core.BaseWindowedApplication</code>, la cual vamos a utilizar en sustitución de <code>mx.core.WindowedApplication</code>. Es decir, en la raíz de nuestro archivo mxml principal vamos a tener lo siguiente:<br />
<strong>FirstrunManagerTest.mxml</strong></p>
<div class="igBar"><span id="lmxml-2"><a href="#" onclick="javascript:showPlainTxt('mxml-2'); return false;">PLAIN TEXT</a></span></div>
<div class="syntax_hilite"><span class="langName">MXML:</span>
<div id="mxml-2">
<div class="mxml">
<ol>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #000000;">&lt;?xml version=<span style="color: #ff0000;">"1.0"</span> encoding=<span style="color: #ff0000;">"utf-8"</span>?<span style="color: #7400FF;">&gt;</span></span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #000000;"><span style="color: #7400FF;">&lt;core:BaseWindowedApplication</span> </div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; xmlns:mx=<span style="color: #ff0000;">"http://www.adobe.com/2006/mxml"</span> </div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; xmlns:core=<span style="color: #ff0000;">"com.joangarnet.air.core.*"</span> </div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; firstrunDirectory=<span style="color: #ff0000;">"firstrun"</span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; firstrunCheck=<span style="color: #ff0000;">"inicio()"</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; isDebug=<span style="color: #ff0000;">"true"</span><span style="color: #7400FF;">&gt;</span></span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #000000;"><span style="color: #7400FF;">&lt;core:BaseWindowedApplication</span><span style="color: #7400FF;">/&gt;</span></span> </div>
</li>
</ol>
</div>
</div>
</div>
<p>
Lo que debemos tener en cuenta de esta subclase de <code>WindowedApplication</code> es que tiene tres parámetros de interés:</p>
<ul>
<li><strong>firstrunDirectory</strong>: La ruta relativa desde la raíz del classpath de nuestra aplicación hasta la carpeta <em>firstrun</em>.</li>
<li><strong>firstrunCheck</strong>: Esto es un <em>handler</em> que se ejecuta cuando los procesos de chequeo y movimiento de archivos se han ejecutado. Normalmente nuestra aplicación empezará a partir de aquí.</li>
<li><strong>isDebug</strong>: Esto es un flag que fuerza a que siempre se sobrescriba el directorio de almacenamiento de la aplicación, lo cual es deseable cuando estamos en fase de desarrollo.</li>
</ul>
<p>Aparte de esto cabe decir que para que se lance el proceso de sobrescritura de archivos en el directorio de almacenamiento se tienen que dar una de estas dos situaciones:</p>
<ol>
<li>Que sea la primera vez que se instala la aplicación en el sistema</li>
<li>Que la versión de la aplicación sea diferente que la que hay (o hubo) instalada</li>
</ol>
<p>En el caso 2 esto quiere decir que si sacamos una nueva versión de la aplicación tenemos que tener el cuidado de reflejarlo en el archivo descriptor de la aplicación (en este ejemplo <em>FirstrunManagerTest-app.xml</em> cambiando el valor del nodo <code>&lt;version&gt;</code>.<br />
Con esto y mirando un poco los comentarios de la clase <code>com.joangarnet.air.core.BaseWindowedApplication</code> para adaptarla a cada caso particular (puede que la lógica que hay por defecto no sea la que tú necesitas) se puede tener un sistema de firstrun a la altura de cualquier otra aplicación.</p>
<h2 id="toc-descarga-del-ejemplo">Descarga del ejemplo</h2>
<div class="files">
    <a href='http://www.madeinflex.com/wp-content/uploads/2008/06/firstrunmanagertest.zip' title='Ejemplo firstrun manager'><br />
        <img src="http://www.madeinflex.com/img/file_icons/zip_file_icon.jpg" alt="Ejemplo firstrun manager" title="Ejemplo firstrun manager" /><br />
    </a><br />
    <a href='http://www.madeinflex.com/wp-content/uploads/2008/06/firstrunmanagertest.zip' title='Ejemplo firstrun manager'>Ejemplo firstrun manager</a>
</div>
<p>&nbsp;</p>
<h2 id="toc-referencias">Referencias</h2>
<ul>
<li><a href="http://livedocs.adobe.com/flex/3/html/help.html?content=security_2.html">AIR security</a></li>
<li><a href="http://livedocs.adobe.com/flex/3/html/help.html?content=updating_apps_1.html">Updating AIR applications</a></li>
</ul>]]></content:encoded>
			<wfw:commentRss>http://www.madeinflex.com/2008/06/18/air-firstrun-manager/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>360Flex Europe: DOMifying Flex Slides</title>
		<link>http://www.madeinflex.com/2008/04/09/360flex-europe-domifying-flex-slides/</link>
		<comments>http://www.madeinflex.com/2008/04/09/360flex-europe-domifying-flex-slides/#comments</comments>
		<pubDate>Wed, 09 Apr 2008 09:10:07 +0000</pubDate>
		<dc:creator>Xavi Beumala</dc:creator>
				<category><![CDATA[AIR (Apollo)]]></category>
		<category><![CDATA[Artículos]]></category>
		<category><![CDATA[Eventos]]></category>
		<category><![CDATA[Recursos]]></category>
		<category><![CDATA[Tips]]></category>

		<guid isPermaLink="false">http://www.madeinflex.com/2008/04/09/360flex-europe-domifying-flex-slides/</guid>
		<description><![CDATA[<!-- matched  --><!-- final 0 -->I'm back from 360Flex Milano. It's been a really nice time there and I've enjoyed a lot the conferences and people. It's always fantastic to share with others experiences, experiments, etc. And of course we've laught a lot! We've been having a really good time with Koen, Marco, Cyril, Giorgio, Sumi, Sakri, Matteo, Luca, Tomislav, [...]]]></description>
			<content:encoded><![CDATA[<!-- matched  --><!-- final 0 --><p>I'm back from 360Flex Milano. It's been a really nice time there and I've enjoyed a lot the conferences and people. It's always fantastic to share with others experiences, experiments, etc. And of course we've laught a lot! We've been having a really good time with <a href="http://newmovieclip.wordpress.com/">Koen</a>, <a href="http://casario.blogs.com/">Marco</a>, Cyril, <a href="http://www.actionscript.it">Giorgio</a>, <a href="http://www.adobe.com">Sumi</a>, <a href="http://www.sakri.net/blog/">Sakri</a>, <a href="http://www.cef62.com/blog">Matteo</a>, <a href="http://lucamezzalira.wordpress.com/">Luca</a>, <a href="http://www.svemir.net/">Tomislav</a>, <a href="http://thecomcor.blogspot.com/">Peter</a>, <a href="http://www.radview.com">Guy</a>, etc...</p>
<p>Here are <a href="/img/entries/DOMifying_Flex.pdf">the slides I used</a> during my preso and <a href="/img/entries/DomifyingFlex-samples.zip">all sample projects</a>.</p>
<p>Just wanted to thank <a href="http://www.360conferences.com/">Tom and John</a> the hard work they've done and hope to see them next year again! <img src='http://www.madeinflex.com/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>]]></content:encoded>
			<wfw:commentRss>http://www.madeinflex.com/2008/04/09/360flex-europe-domifying-flex-slides/feed/</wfw:commentRss>
		<slash:comments>1</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&h=200&file=http://www.madeinflex.com/index.php&ftf=true&postID=655&no=0&def=http://www.madeinflex.com./wp-content/plugins/FlashTextFormatter/definitions/as2.xml&auto=true&" />
		  <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&h=200&file=http://www.madeinflex.com/index.php&ftf=true&postID=655&no=0&def=http://www.madeinflex.com./wp-content/plugins/FlashTextFormatter/definitions/as2.xml&auto=true&" />
		</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's a través de XSLT'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's a través de XSLT'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's contra xml'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&h=200&file=http://www.madeinflex.com/index.php&ftf=true&postID=648&no=0&def=http://www.madeinflex.com./wp-content/plugins/FlashTextFormatter/definitions/as2.xml&auto=true&" />
		  <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&h=200&file=http://www.madeinflex.com/index.php&ftf=true&postID=648&no=0&def=http://www.madeinflex.com./wp-content/plugins/FlashTextFormatter/definitions/as2.xml&auto=true&" />
		</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&h=200&file=http://www.madeinflex.com/index.php&ftf=true&postID=648&no=1&def=http://www.madeinflex.com./wp-content/plugins/FlashTextFormatter/definitions/as2.xml&auto=true&" />
		  <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&h=200&file=http://www.madeinflex.com/index.php&ftf=true&postID=648&no=1&def=http://www.madeinflex.com./wp-content/plugins/FlashTextFormatter/definitions/as2.xml&auto=true&" />
		</object>
</li>
<li>Aplicamos la xlst al xml mediante una processing instruction del estilo &lt;?xml-stylesheet href="transformacion.xsl" type="text/xsl" ?&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&h=400&file=http://www.madeinflex.com/index.php&ftf=true&postID=648&no=2&def=http://www.madeinflex.com./wp-content/plugins/FlashTextFormatter/definitions/as2.xml&auto=true&" />
		  <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&h=400&file=http://www.madeinflex.com/index.php&ftf=true&postID=648&no=2&def=http://www.madeinflex.com./wp-content/plugins/FlashTextFormatter/definitions/as2.xml&auto=true&" />
		</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&h=400&file=http://www.madeinflex.com/index.php&ftf=true&postID=648&no=3&def=http://www.madeinflex.com./wp-content/plugins/FlashTextFormatter/definitions/as2.xml&auto=true&" />
		  <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&h=400&file=http://www.madeinflex.com/index.php&ftf=true&postID=648&no=3&def=http://www.madeinflex.com./wp-content/plugins/FlashTextFormatter/definitions/as2.xml&auto=true&" />
		</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>Tendencia RIA 2008,y tu ¿que opinas?</title>
		<link>http://www.madeinflex.com/2008/03/01/tendencia-ria-2008y-tu-%c2%bfque-opinas/</link>
		<comments>http://www.madeinflex.com/2008/03/01/tendencia-ria-2008y-tu-%c2%bfque-opinas/#comments</comments>
		<pubDate>Sat, 01 Mar 2008 14:55:41 +0000</pubDate>
		<dc:creator>Angel Blesa</dc:creator>
				<category><![CDATA[AIR (Apollo)]]></category>
		<category><![CDATA[Ajax]]></category>
		<category><![CDATA[General]]></category>

		<guid isPermaLink="false">http://www.madeinflex.com/2008/03/01/tendencia-ria-2008y-tu-%c2%bfque-opinas/</guid>
		<description><![CDATA[<!-- matched  --><!-- final 0 -->Hasta hace un tiempo era dificil encontrar artículos sobre RIA y Flex/AIR en la blogosfera hispana, pero poco a poco se empieza a ver que la revolución RIA llega a los medios generalistas y a la base de la comunidad desarrolladora, imprescindible para que una tecnología / visión se asiente.
En este artículo sobre tendencias RIA [...]]]></description>
			<content:encoded><![CDATA[<!-- matched  --><!-- final 0 --><p>Hasta hace un tiempo era dificil encontrar artículos sobre <strong>RIA </strong>y <strong>Flex/AIR</strong> en la blogosfera hispana, pero poco a poco se empieza a ver que <a href="http://www.elpais.com/articulo/internet/Adobe/acerca/aplicaciones/web/escritorio/elpeputec/20080225elpepunet_4/Tes">la revolución RIA llega a los medios generalistas</a> y a la base de la comunidad desarrolladora, imprescindible para que una tecnología / visión se asiente.</p>
<p>En este artículo sobre <a href="http://www.error500.net/2008-ano-ria">tendencias RIA en 2008 de Error500</a> se discute sobre esta revolución y la tendencia en 2008. </p>
<p>Aquí en <a href="http://www.madeinflex.com">MIF</a> llevamos mucho tiempo hablando sobre la misma , y los diferentes agentes que acompañan a <strong>Flex /AIR</strong> en este ecosistema. Y a vosotros ¿Que os parece? , ¿como veis el estado del RIA en el mercado? ¿creeis que la mayoría de la empresas son sensibles a la palabra "RIA"?  ¿que os parece la competencia, <strong>Silverlight, AJAX, OpenLazlo, JavaFX</strong>, etc..? ¿Para cuando el desarrollo <strong>RIA en el movil </strong>de manera extensiva y comoda?<br />
Esperamos vuestros comentarios para enriquecer el debate. s2.</p>]]></content:encoded>
			<wfw:commentRss>http://www.madeinflex.com/2008/03/01/tendencia-ria-2008y-tu-%c2%bfque-opinas/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
	</channel>
</rss>
