<?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>www.riactive.com</title>
	<atom:link href="http://www.riactive.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.riactive.com</link>
	<description></description>
	<lastBuildDate>Tue, 09 Mar 2010 00:02:52 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.5</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>AMFPHP Genie!</title>
		<link>http://www.riactive.com/2010/03/08/amfphp-genie/</link>
		<comments>http://www.riactive.com/2010/03/08/amfphp-genie/#comments</comments>
		<pubDate>Tue, 09 Mar 2010 00:02:06 +0000</pubDate>
		<dc:creator>yacaFx</dc:creator>
				<category><![CDATA[General]]></category>

		<guid isPermaLink="false">http://www.riactive.com/?p=891</guid>
		<description><![CDATA[Como muchos saben en RIActive tenemos un gusto especial por AMFPHP a pesar de llevar un buen tiempo que este proyecto quedó huérfano, y actualmente existen algunas iniciativas en la web para reactivarlo,  de dichas iniciativas hablaremos después, mientras tanto me gustaría compartir con ustedes AMFPHP Genie! que es una fabulosa herramienta desarrollada en [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://www.riactive.com/wp-content/uploads/2010/03/appIcon_128.png" alt="Amfphp Genie!" width="128" height="128" class="aligncenter size-full wp-image-893" />Como muchos saben en RIActive tenemos un gusto especial por AMFPHP a pesar de llevar un buen tiempo que este proyecto quedó huérfano, y actualmente existen algunas iniciativas en la web para reactivarlo,  de dichas iniciativas hablaremos después, mientras tanto me gustaría compartir con ustedes <a href="http://dannykopping.co.za/amfphp-genie/">AMFPHP Genie!</a> que es una fabulosa herramienta desarrollada en Adobe Air por <a href="http://dannykopping.co.za/">Danny Kopping</a>, desarrollador Flex/ Flash de Johannesburgo Sudáfrica.</p>
<p><a href="http://dannykopping.co.za/amfphp-genie/">AMFPHP Genie!</a> es una herramienta que nos facilita mucho la vida para generar nuestros Value Objects o nuestras clases (para PHP y Flex) desde una Base de Datos MYSQL.  Este interesante proyecto hace uso de <a href="http://code.google.com/p/assql/">asSQL 2.7 Beta</a> que es un driver que nos ayuda a conectar directamente  nuestras aplicaciones Flash/Flex con MySQL.<br />
<span id="more-891"></span><br />
Actualmente se encuentra en su versión 0.2 y acorde al website vienen cosas interesantes para esta herramienta ademas del buen uso que le dan a las características de una app en AIR</p>
<p>Les recomiendo le hechen un vistazo y créanme si hacen uso de AMFPHP esta herramienta les facilitará enormemente la vida =)</p>
<p>Les dejo aquí unos screenshoots de la app en uso, la url del proyecto para su instalación.</p>
<p><a href="http://dannykopping.co.za/amfphp-genie/">http://dannykopping.co.za/amfphp-genie/</a></p>
<p>Saludos y Happy Coding!!!</p>
<p><img src="http://www.riactive.com/wp-content/uploads/2010/03/Full2.png" alt="Full2" width="787" height="563" class="aligncenter size-full wp-image-899" /><img src="http://www.riactive.com/wp-content/uploads/2010/03/opciones.png" alt="opciones" width="420" height="222" class="aligncenter size-full wp-image-902" /><img src="http://www.riactive.com/wp-content/uploads/2010/03/tiposDeDatos.png" alt="tiposDeDatos" width="253" height="280" class="aligncenter size-full wp-image-904" /><img src="http://www.riactive.com/wp-content/uploads/2010/03/claseAS.png" alt="claseAS" width="1176" height="454" class="aligncenter size-full wp-image-895" /></p>
]]></content:encoded>
			<wfw:commentRss>http://www.riactive.com/2010/03/08/amfphp-genie/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Ayuda Chile</title>
		<link>http://www.riactive.com/2010/03/05/ayuda-chile/</link>
		<comments>http://www.riactive.com/2010/03/05/ayuda-chile/#comments</comments>
		<pubDate>Fri, 05 Mar 2010 17:38:56 +0000</pubDate>
		<dc:creator>Edgar Parada</dc:creator>
				<category><![CDATA[Noticias]]></category>

		<guid isPermaLink="false">http://www.riactive.com/?p=884</guid>
		<description><![CDATA[Disculpen que nos salgamos un poco de la línea habitual de este blog, pero queríamos mandar un mensaje de apoyo a una de nuestras comunidades hermanas el MMUG Chile. Seguramente a estas alturas más de uno estará enterado de la tragedia ocurrida en ese país y cuando este tipo de cosas ocurren nos preguntamos ¿y [...]]]></description>
			<content:encoded><![CDATA[<p>Disculpen que nos salgamos un poco de la línea habitual de este blog, pero queríamos mandar un mensaje de apoyo a una de nuestras comunidades hermanas el <a href="http://www.mmug.cl/" target="_blank">MMUG Chile</a>. Seguramente a estas alturas más de uno estará enterado de la tragedia ocurrida en ese país y cuando este tipo de cosas ocurren nos preguntamos <strong>¿y yo que estoy a cientos de km que puedo hacer?</strong> pues nuestro amigo Luis manager del AUG chileno nos ha recomendado la siguiente liga que compartimos con ustedes.</p>
<div align="center"><a href="http://www.chileayuda.com/" target="_blank"><img src="http://www.riactive.com/wp-content/uploads/2010/03/logo.png" alt="Chile Ayuda Logo" title="Chile Ayuda Logo" width="300" height="59" class="aligncenter size-full wp-image-885" /></a></div>
<p>Y por último que mejor que un extracto de las palabras de <a href="http://twitter.com/fel_luis" target="_blank">Luis Felipe</a> para darle un poco más de sentido a estas palabras...<br />
<em>"La parte seria fue un poco más al sur, pueblos enteros desaparecidos y todavía incomunicados, si no fuera mucho con el terremoto de 8.8, el Tsunami terminó de barrer pueblos costeros que simplemente ya no están en el mapa. El problema de un país largo y flaco es que todo depende de una sola gran carretera que quedó cortada en varios tramos, por lo que el viaje al sur con ayuda es bastante difícil y accidentado."</em></p>
]]></content:encoded>
			<wfw:commentRss>http://www.riactive.com/2010/03/05/ayuda-chile/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Blog de Flexeando</title>
		<link>http://www.riactive.com/2010/03/01/blog-de-flexeando/</link>
		<comments>http://www.riactive.com/2010/03/01/blog-de-flexeando/#comments</comments>
		<pubDate>Tue, 02 Mar 2010 04:58:21 +0000</pubDate>
		<dc:creator>Edgar Parada</dc:creator>
				<category><![CDATA[Flex]]></category>
		<category><![CDATA[Recursos]]></category>

		<guid isPermaLink="false">http://www.riactive.com/?p=875</guid>
		<description><![CDATA[Desde hace tiempo que queremos dar seguimiento a la escena Flex en México y no se nos ocurre mejor manera que hablar de los proyectos, blogs, comunidades que surgen día a día y que son generadas por profesionales con los cuales tenemos el gusto de compartir plaza.
El proyecto del cuál queremos hablar ahora se llama [...]]]></description>
			<content:encoded><![CDATA[<p>Desde hace tiempo que queremos dar seguimiento a <strong>la escena Flex en México</strong> y no se nos ocurre mejor manera que hablar de los <em>proyectos, blogs, comunidades</em> que surgen día a día y que son generadas por profesionales con los cuales tenemos el gusto de compartir plaza.<br />
El proyecto del cuál queremos hablar ahora se llama <a href="http://flexeando.com/" target="_blank">Flexeando</a> el cuál por el momento corre a cargo de nuestro amigo <a href="http://twitter.com/bloodlust">Alberto Blas</a>, que en palabras de él mismo "<em>Este sitio se ha convertido en un proyecto personal para persistir lo que voy aplicando, encontrando y aprendiendo mientras flexeo. Nací en Pachuca (MX) pero ahora resido en Nuevo León.</em>"</p>
<div align="center"><a href="http://flexeando.com/" target="_blank"><img src="http://www.riactive.com/wp-content/uploads/2010/03/flexeando.png" alt="Flexeando" title="Flexeando" width="399" height="140" class="aligncenter size-full wp-image-876" /></a></div>
<p>En Flexeando encontraremos una seción llamada <a href="http://flexeando.com/category/pensamientos-flex/" target="_blank">Pensamientos Flexeros</a> muy al estilo <em>Aral Balkan</em>, una colección de <a href="http://flexeando.com/category/recursos/" target="_blank">recursos muy útiles</a> e inclusive una recopilación del hashtag de twitter <a href="http://flexeando.com/category/filosofiaria/" target="_blank">#filosofiaRIA</a>.<br />
Desde <strong>RIActive</strong> queremos desearle la mejor de las suertes a Flexeando <img src='http://www.riactive.com/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' />  y no olviden agregarlo a sus <a href="http://flexeando.com/feed/" target="_blank">feeds</a> y darle <a href="http://twitter.com/flexeando" target="_blank">follow</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.riactive.com/2010/03/01/blog-de-flexeando/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Carga de assets &#8220;at runtime&#8221; con Flash</title>
		<link>http://www.riactive.com/2010/02/22/carga-assets-runtime/</link>
		<comments>http://www.riactive.com/2010/02/22/carga-assets-runtime/#comments</comments>
		<pubDate>Mon, 22 Feb 2010 21:42:28 +0000</pubDate>
		<dc:creator>Alberto Gonzalez</dc:creator>
				<category><![CDATA[CS4]]></category>
		<category><![CDATA[flash]]></category>
		<category><![CDATA[ApplicationDomain]]></category>
		<category><![CDATA[as3]]></category>
		<category><![CDATA[assets]]></category>
		<category><![CDATA[LoaderContext]]></category>

		<guid isPermaLink="false">http://www.riactive.com/?p=838</guid>
		<description><![CDATA[Últimamente he estado involucrado en un proyecto realizado en Flash principalmente. Una parte importante de este proyecto es que debe tener temas visuales distintos. Cada tema está compuesto de muchos elementos gráficos principalmente movie clips y animaciones. Cada tema estará definido en la biblioteca de un swf por lo que tendremos varios swf y cada [...]]]></description>
			<content:encoded><![CDATA[<p>Últimamente he estado involucrado en un proyecto realizado en Flash principalmente. Una parte importante de este proyecto es que debe tener temas visuales distintos. Cada tema está compuesto de muchos elementos gráficos principalmente movie clips y animaciones. Cada tema estará definido en la biblioteca de un swf por lo que tendremos varios swf y cada uno de ellos contendrá los assets correspondientes a su tema.<br />
<br />
Lo que les voy a mostrar en este post es cómo cargar esos swf y acceder a sus elementos de la biblioteca desde la película principal.<br />
<span id="more-838"></span><br />
</p>
<h3>Requerimientos</h3>
<li>Adobe Flash CS4 (<a href="http://www.adobe.com/flash">http://www.adobe.com/flash</a>)</li>
<h3>Prerequisitos</h3>
<li>Estar familiarizado con la terminología de ActionScript 3.0</li>
<li>Haber trabajado con Adobe Flash y el manejo de su biblioteca y símbolos</li>
<h3>Desarrollo</h3>
<p>El escenario es el sig: </p>
<li>Crearemos 3 archivos .fla que ejemplificarán los 3 temas</li>
<li>Cada .fla tendrá solo dos elementos en la biblioteca exportados para ActionScript</li>
<li>Generaremos un .fla adicional que servirá como aplicación principal y desde la cuál se cargará alguno de los otros 3 swf con los assets preparados</li>
<li>Por último utilizaremos en la aplicación principal los elementos que se encuentran en la biblioteca del swf cargado</li>
<p><a href="http://www.riactive.com/wp-content/uploads/2010/02/Assets_1.jpg"><img src="http://www.riactive.com/wp-content/uploads/2010/02/Assets_1-277x300.jpg" alt="Assets_1" title="Assets_1" width="277" height="300" class="aligncenter size-medium wp-image-843" /></a></p>
<p><a href="http://www.riactive.com/wp-content/uploads/2010/02/Assets_2.jpg"><img src="http://www.riactive.com/wp-content/uploads/2010/02/Assets_2-277x300.jpg" alt="Assets_2" title="Assets_2" width="277" height="300" class="aligncenter size-medium wp-image-844" /></a><br />
<a href="http://www.riactive.com/wp-content/uploads/2010/02/Assets_3.jpg"><img src="http://www.riactive.com/wp-content/uploads/2010/02/Assets_3-279x300.jpg" alt="Assets_3" title="Assets_3" width="279" height="300" class="aligncenter size-medium wp-image-845" /></a></p>
<p><a href="http://www.riactive.com/wp-content/uploads/2010/02/Assets_library.jpg"><img src="http://www.riactive.com/wp-content/uploads/2010/02/Assets_library-300x238.jpg" alt="Assets_library" title="Assets_library" width="300" height="238" class="aligncenter size-medium wp-image-846" /></a></p>
<p>En las imágenes muestro como deberá quedar la biblioteca de los 3 swf que servirán como contenedores de los assets.<br />
Únicamente coloqué dos elementos (Header, Footer), por motivos del ejemplo, y tienen asociada su clase respectiva desde la biblioteca.<br />
<br />
No es necesario que pongamos contenido en el escenario ya que no mostraremos el swf cargado, solo utilizaremos sus elementos.<br />
<br />
Vamos ahora a crear el fla que servirá como principal y desde donde pondremos unos controles para cargar los assets requeridos.<br />
<a href="http://www.riactive.com/wp-content/uploads/2010/02/main-movie.jpg"><img src="http://www.riactive.com/wp-content/uploads/2010/02/main-movie-300x230.jpg" alt="main movie" title="main movie" width="300" height="230" class="aligncenter size-medium wp-image-851" /></a><br />
<a href="http://www.riactive.com/wp-content/uploads/2010/02/contenido-combo.jpg"><img src="http://www.riactive.com/wp-content/uploads/2010/02/contenido-combo-300x216.jpg" alt="contenido combo" title="contenido combo" width="300" height="216" class="aligncenter size-medium wp-image-850" /></a></p>
<p>Colocamos 3 componentes en el escenario: Una etiqueta, un botón y un combo box. El botón y el combo box tienen como nombres de instancia "botonCarga" y "comboSeleccion" respectivamente.<br />
<br />
El combo tiene los datos mostrados en la imagen colocados desde el Inspector de Componentes por motivos de facilidad en el ejemplo.<br />
<br />
Los 3 componentes se encuentran dentro de un MovieClip que está en el escenario. Ese movie clip tiene de nombre de instancia "selector". Los componentes se encuentran dentro de este clip para después poder quitarlos más fácilmente.<br />
<br />
Ese movie clip tiene el sig código en la línea de tiempo:</p>

<div class="wp_syntax"><div class="code"><pre class="actionscript" style="font-family:monospace;"><span style="color: #808080; font-style: italic;">//ActionScript 3.0</span>
&nbsp;
comboSeleccion.<span style="color: #006600;">addEventListener</span><span style="color: #66cc66;">&#40;</span>Event.<span style="color: #006600;">CHANGE</span>, onComboChange<span style="color: #66cc66;">&#41;</span>;
botonCarga.<span style="color: #006600;">addEventListener</span><span style="color: #66cc66;">&#40;</span>MouseEvent.<span style="color: #006600;">CLICK</span>, onBotonClick<span style="color: #66cc66;">&#41;</span>;
&nbsp;
botonCarga.<span style="color: #0066CC;">enabled</span> = <span style="color: #000000; font-weight: bold;">false</span>;
&nbsp;
<span style="color: #000000; font-weight: bold;">function</span> onComboChange <span style="color: #66cc66;">&#40;</span>event:Event<span style="color: #66cc66;">&#41;</span>:<span style="color: #0066CC;">void</span> 
<span style="color: #66cc66;">&#123;</span>
	botonCarga.<span style="color: #0066CC;">enabled</span> = event.<span style="color: #0066CC;">target</span>.<span style="color: #006600;">selectedIndex</span> <span style="color: #66cc66;">&gt;</span> <span style="color: #cc66cc;">0</span>;
<span style="color: #66cc66;">&#125;</span>
<span style="color: #000000; font-weight: bold;">function</span> onBotonClick<span style="color: #66cc66;">&#40;</span>event:MouseEvent<span style="color: #66cc66;">&#41;</span>:<span style="color: #0066CC;">void</span>
<span style="color: #66cc66;">&#123;</span>
	<span style="color: #0066CC;">MovieClip</span><span style="color: #66cc66;">&#40;</span>parent<span style="color: #66cc66;">&#41;</span>.<span style="color: #006600;">cargarAssets</span><span style="color: #66cc66;">&#40;</span>comboSeleccion.<span style="color: #006600;">selectedItem</span>.<span style="color: #0066CC;">data</span><span style="color: #66cc66;">&#41;</span>;
<span style="color: #66cc66;">&#125;</span></pre></div></div>

<p>
Como se darán cuenta la carga la hace una función llamada "cargarAssets" que se encuentra en la línea de tiempo principal, es decir, el "parent" de este clip. Ahora veamos el código que se encarga de la magia el cual se encuentra en la línea de tiempo principal:</p>

<div class="wp_syntax"><div class="code"><pre class="actionscript" style="font-family:monospace;"><span style="color: #0066CC;">import</span> flash.<span style="color: #006600;">utils</span>.<span style="color: #006600;">getDefinitionByName</span>;
&nbsp;
<span style="color: #000000; font-weight: bold;">var</span> req:URLRequest = <span style="color: #000000; font-weight: bold;">new</span> URLRequest<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;
<span style="color: #000000; font-weight: bold;">var</span> loader:Loader = <span style="color: #000000; font-weight: bold;">new</span> Loader<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;
loader.<span style="color: #006600;">contentLoaderInfo</span>.<span style="color: #006600;">addEventListener</span><span style="color: #66cc66;">&#40;</span>Event.<span style="color: #006600;">COMPLETE</span>, onAssetsComplete<span style="color: #66cc66;">&#41;</span>;
&nbsp;
<span style="color: #808080; font-style: italic;">// Esta es la parte importante.</span>
<span style="color: #808080; font-style: italic;">// El poner las clases cargadas dentro mismo contexto de la aplicación principal</span>
<span style="color: #000000; font-weight: bold;">var</span> lc:LoaderContext = <span style="color: #000000; font-weight: bold;">new</span> LoaderContext<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;
lc.<span style="color: #006600;">applicationDomain</span> = ApplicationDomain.<span style="color: #006600;">currentDomain</span>;
&nbsp;
<span style="color: #808080; font-style: italic;">// Esta fn se invoca desde el clip selector</span>
<span style="color: #000000; font-weight: bold;">function</span> cargarAssets <span style="color: #66cc66;">&#40;</span>seleccion:<span style="color: #0066CC;">String</span><span style="color: #66cc66;">&#41;</span>:<span style="color: #0066CC;">void</span> 
<span style="color: #66cc66;">&#123;</span>
	req.<span style="color: #0066CC;">url</span> = <span style="color: #ff0000;">&quot;assets/&quot;</span> + seleccion;
	loader.<span style="color: #0066CC;">load</span><span style="color: #66cc66;">&#40;</span>req, lc<span style="color: #66cc66;">&#41;</span>;<span style="color: #808080; font-style: italic;">// Pasándole como segundo argumento el contexto definido arriba</span>
<span style="color: #66cc66;">&#125;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">function</span> onAssetsComplete <span style="color: #66cc66;">&#40;</span>event:Event<span style="color: #66cc66;">&#41;</span>:<span style="color: #0066CC;">void</span>
<span style="color: #66cc66;">&#123;</span>
	<span style="color: #0066CC;">trace</span><span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">&quot;Assets cargados y disponibles&quot;</span><span style="color: #66cc66;">&#41;</span>;
&nbsp;
	<span style="color: #808080; font-style: italic;">// Definición de las clases a utilizar ( ya están disponibles )</span>
	<span style="color: #808080; font-style: italic;">// Header y Footer están definidos en la biblioteca del swf cargado</span>
	<span style="color: #000000; font-weight: bold;">var</span> Header:<span style="color: #000000; font-weight: bold;">Class</span> = getDefinitionByName<span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">&quot;Header&quot;</span><span style="color: #66cc66;">&#41;</span> as <span style="color: #000000; font-weight: bold;">Class</span>;
	<span style="color: #000000; font-weight: bold;">var</span> Footer:<span style="color: #000000; font-weight: bold;">Class</span> = getDefinitionByName<span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">&quot;Footer&quot;</span><span style="color: #66cc66;">&#41;</span> as <span style="color: #000000; font-weight: bold;">Class</span>;
&nbsp;
	<span style="color: #808080; font-style: italic;">// Instancias de esas clases</span>
	<span style="color: #000000; font-weight: bold;">var</span> _header:DisplayObject = <span style="color: #000000; font-weight: bold;">new</span> Header<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span> as DisplayObject;
	<span style="color: #000000; font-weight: bold;">var</span> _footer:DisplayObject = <span style="color: #000000; font-weight: bold;">new</span> Footer<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span> as DisplayObject;
&nbsp;
	<span style="color: #808080; font-style: italic;">// Agregamos y acomodamos elementos</span>
	addChild<span style="color: #66cc66;">&#40;</span>_header<span style="color: #66cc66;">&#41;</span>;
	addChild<span style="color: #66cc66;">&#40;</span>_footer<span style="color: #66cc66;">&#41;</span>; _footer.<span style="color: #006600;">y</span> = <span style="color: #0066CC;">stage</span>.<span style="color: #006600;">stageHeight</span> - _footer.<span style="color: #0066CC;">height</span>;
&nbsp;
	<span style="color: #808080; font-style: italic;">// Ocultamos el componente de selección</span>
	selector.<span style="color: #0066CC;">visible</span> = <span style="color: #000000; font-weight: bold;">false</span>;
<span style="color: #66cc66;">&#125;</span></pre></div></div>

<p>
El código muestra como carga un swf con la clase Loader. Hasta ahí todo normal. El punto importante es la instancia de "LoaderContext" que está definida justo antes de cargar los elementos y su propiedad applicationDomain. Esa instancia la utilizamos en la función <em>load</em> de la instancia de <em>Loader</em>.</p>

<div class="wp_syntax"><div class="code"><pre class="actionscript" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">var</span> lc:LoaderContext = <span style="color: #000000; font-weight: bold;">new</span> LoaderContext<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;
lc.<span style="color: #006600;">applicationDomain</span> = ApplicationDomain.<span style="color: #006600;">currentDomain</span>;</pre></div></div>

<p>
Un <strong>ApplicationDomain</strong> es el contexto donde está disponible tu código. Normalmente se genera una instancia de ApplicationDomain por cada swf que tengamos pero con esa instrucción estamos indicando que las classes que contiene el swf de los assets queremos que esten disponibles en el mismo contexto que la película que lo carga, es decir, la película principal.<br />
<br />
Una vez hecho eso, la clase la podemos utilizar como cualquier otra. En el ejemplo estoy obteniendo la definición de las clases "Header" y "Footer" en dos variables que después estoy instanciando y agregando al DisplayList para mostrarlas en la película principal.<br />
<br />
El ejemplo supone que tiene una estructura de archivos similar a la sig:<br />
- carpeta principal<br />
&nbsp;&nbsp;- main.swf<br />
&nbsp;&nbsp;- assets (carpeta)<br />
&nbsp;&nbsp;&nbsp;&nbsp;- assets_1.swf<br />
&nbsp;&nbsp;&nbsp;&nbsp;- assets_2.swf<br />
&nbsp;&nbsp;&nbsp;&nbsp;- assets_3.swf</p>
<h3>Conclusión</h3>
<p>Sabemos que existen las bibliotecas compartidas. Sabemos que podemos tener muchos elementos en la biblioteca y utilizar solo los requeridos pero, sin lugar a dudas, cuando debemos elegir entre varios elementos a cargar para una sola aplicación esta puede ser una de las mejores opciones. De esta forma no incrementan el tamaño de su aplicación principal teniendo assets en la biblioteca que podría no utilizar un usuario, ya sea por su rol asignado o por cualquier otra razón.<br />
<br />
Esta técnica también les puede ayudar a actualizar las aplicaciones, al menos, en cuanto a los elementos gráficos mostrados debido a que con solo cambiar el/los swf de los assets podrán cambiar por completo el diseño de su aplicación.</p>
<h3>Archivos</h3>
<p>Aquí les dejo los archivos del ejemplo (Flash CS4):<br />
- <a href='http://www.riactive.com/wp-content/uploads/2010/02/Carga_Assets.zip'>Carga_Assets.zip</a></p>
<p><em>Espero que les sirva este artículo para sus futuros proyectos.<br />
Cualquier pregunta no duden en dejar un comentario en el post o enviarme un e-mail a: agonzalez@activ.com.mx</em></p>
]]></content:encoded>
			<wfw:commentRss>http://www.riactive.com/2010/02/22/carga-assets-runtime/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Música de 22 Century, Rock and RIA</title>
		<link>http://www.riactive.com/2010/02/19/musica-de-22-century-rock-and-ria/</link>
		<comments>http://www.riactive.com/2010/02/19/musica-de-22-century-rock-and-ria/#comments</comments>
		<pubDate>Fri, 19 Feb 2010 20:06:44 +0000</pubDate>
		<dc:creator>Edgar Parada</dc:creator>
				<category><![CDATA[Flex]]></category>
		<category><![CDATA[General]]></category>

		<guid isPermaLink="false">http://www.riactive.com/?p=834</guid>
		<description><![CDATA[En esta ocasión tenemos para todos aquellos RIA developers y fans del rock un regalo bastante atractivo. Resulta que Duane Nickull además de ser consultor de Live Cycle, SOA y Flex para Adobe Systems también tiene un grupo de rock llamado 22 Century y nos ha enviado algunos discos para compartirlos con la comunidad  [...]]]></description>
			<content:encoded><![CDATA[<p>En esta ocasión tenemos para todos aquellos RIA developers y fans del rock un regalo bastante atractivo. Resulta que <a href="http://technoracle.blogspot.com/">Duane Nickull</a> además de ser consultor de <em>Live Cycle, SOA y Flex</em> para Adobe Systems también tiene un grupo de rock llamado <a href="http://22ndcenturyofficial.com/">22 Century</a> y nos ha enviado algunos discos para compartirlos con la comunidad <img src='http://www.riactive.com/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
<p>Si quieres un disco solo tienes que decirnos en los comentarios de este post que tecnología de la Plataforma Flash utilizas más y cuál es tu grupo de rock favorito, te contactaremos por mail para darte instrucciones de donde recoger tu premio.</p>
<p>Por cierto esta iniciativa salió de una charla entre Duane (<a href="http://twitter.com/duanechaos">@duanechaos</a>), Sergio (<a href="http://twitter.com/yacafx">@yacaFX</a>) y Edgar (<a href="http://twitter.com/edgarparada">@edgarparada</a>) la cual les compartimos también.</p>
<p><object width="425" height="344"><param name="movie" value="http://www.youtube.com/v/MjDOqHOONik&#038;hl=en&#038;fs=1"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/MjDOqHOONik&#038;hl=en&#038;fs=1" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="344"></embed></object></p>
]]></content:encoded>
			<wfw:commentRss>http://www.riactive.com/2010/02/19/musica-de-22-century-rock-and-ria/feed/</wfw:commentRss>
		<slash:comments>11</slash:comments>
		</item>
		<item>
		<title>5 Flashers VS HTML 5 &#8211; Invitación</title>
		<link>http://www.riactive.com/2010/02/16/5-flashers-vs-html-5-invitacion/</link>
		<comments>http://www.riactive.com/2010/02/16/5-flashers-vs-html-5-invitacion/#comments</comments>
		<pubDate>Tue, 16 Feb 2010 23:51:13 +0000</pubDate>
		<dc:creator>Edgar Parada</dc:creator>
				<category><![CDATA[Eventos]]></category>
		<category><![CDATA[flash]]></category>

		<guid isPermaLink="false">http://www.riactive.com/?p=825</guid>
		<description><![CDATA[Hace días que se viene dando un interesante debate alrededor de la tecnología Flash y HTML 5, hemos visto diversas opiniones y a diferentes escalas inclusive algunas declaraciones de parte del CEO de Apple (Steve Jobs) y el CTO de Adobe (Kevin Lynch). 
Esto no es algo nuevo, de hecho con cada nueva tecnología que [...]]]></description>
			<content:encoded><![CDATA[<p>Hace días que se viene dando un interesante debate alrededor de la tecnología <strong>Flash y HTML 5</strong>, hemos visto diversas opiniones y a diferentes escalas inclusive algunas declaraciones de parte del <a href="http://www.tuaw.com/2010/01/31/steve-jobs-at-apple-town-hall-meeting-harsh-words-for-google-a/">CEO de Apple (Steve Jobs)</a> y el <a href="http://blogs.adobe.com/conversations/2010/02/open_access_to_content_and_app.html">CTO de Adobe (Kevin Lynch)</a>. </p>
<p>Esto no es algo nuevo, de hecho con cada nueva tecnología que sale al mercado (<em>Silverlight, JavaFX, etc.</em>) y/o <em>cada que la W3C se pone las pilas sucede lo mismo</em>, hay quiénes toman <a href="http://www.cristalab.com/blog/el-futuro-de-flash-c84378l/">una posición a favor</a> y hay quiénes toman <a href="http://www.maestrosdelweb.com/editorial/flash-en-aprietos/">una posición en contra</a>; lo cuál es muy respetable siempre que esto vaya sustentado con argumentos y no simplemente como un factor de respuesta a todo el ruido que se genera en el medio.</p>
<p>La semana pasada tuve la oportunidad de participar con <a href="http://twitter.com/freddier">@freddier</a> y <a href="http://twitter.com/cvander">@cvander</a> en el programa de <a href="http://mejorandolaweb.com/">Mejorando la Web</a> para hablar al respecto, y los comentarios que pude ver alrededor de esta discusión fueron bastante atinados. Es por eso que al final del programa decidí comentarle una inquietud a Freddy y a Christian (quiénes se mostraron entusiasmados) misma que comparto con ustedes en este post.</p>
<div align="center"><a href="http://www.mejorandolaweb.com"><img src="http://www.riactive.com/wp-content/uploads/2010/02/logo-trans.png" alt="logo-trans" title="logo-trans" width="373" height="57" class="aligncenter size-full wp-image-831" /></a></div>
<p><span id="more-825"></span><br />
<strong>La idea es organizar un debate con 5 invitados de cada bando</strong> (por decirlo de una manera), es decir <strong>5 entusiastas de Flash</strong> y <strong>5 entusiastas de HTML 5</strong>. Ya tenemos algunas personas interesadas pero no creo que fuera en realidad algo muy democrático si no le diéramos cabida a cualquier persona de la comunidad que quiera participar.</p>
<p>Por lo que no importa que posición sea la tuya, si estás interesado en debatir queremos escuchar tu "elevator pitch" al respecto y si eres de los mejor articulados será un honor que lo compartas ese día con nosotros <img src='http://www.riactive.com/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
<p>Aún tenemos que definir las fechas pero tan pronto tengamos a los participantes lo haremos de manera formal, por lo que <strong>si estas interesado en participar no dudes en dejar tu comentario en este post lo antes posible.</strong></p>
]]></content:encoded>
			<wfw:commentRss>http://www.riactive.com/2010/02/16/5-flashers-vs-html-5-invitacion/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>Nueva versión de Adobe AIR 2.0</title>
		<link>http://www.riactive.com/2010/02/02/adobe-air-2-beta2/</link>
		<comments>http://www.riactive.com/2010/02/02/adobe-air-2-beta2/#comments</comments>
		<pubDate>Tue, 02 Feb 2010 17:28:54 +0000</pubDate>
		<dc:creator>Alberto Gonzalez</dc:creator>
				<category><![CDATA[Actualizaciones]]></category>
		<category><![CDATA[Apollo]]></category>
		<category><![CDATA[air]]></category>

		<guid isPermaLink="false">http://www.riactive.com/?p=816</guid>
		<description><![CDATA[El día de hoy se liberó una nueva versión de Adobe AIR 2.0, la versión BETA 2.

Desde la versión anterior (beta 1) hemos podido utilizar muchas de sus nuevas características:
Webkit con soporte para CSS3/HTML 5
Integración de código nativo
Empaquetamiento de aplicaciones como instaladores nativos del OS
Soporte para detección de volúmenes de almacenamiento de datos
Muchas mejoras en [...]]]></description>
			<content:encoded><![CDATA[<p>El día de hoy se liberó una nueva versión de <strong><a href="http://labs.adobe.com/technologies/air2">Adobe AIR 2.0, la versión BETA 2</a>.</strong><br />
<br />
Desde la versión anterior (beta 1) hemos podido utilizar muchas de sus nuevas características:</p>
<li>Webkit con soporte para CSS3/HTML 5</li>
<li>Integración de código nativo</li>
<li>Empaquetamiento de aplicaciones como instaladores nativos del OS</li>
<li>Soporte para detección de volúmenes de almacenamiento de datos</li>
<li>Muchas mejoras en la comunicación por redes (UDP, DNSResolver, Socket Servers, etc)</li>
<p>pueden encontrar una lista completa de las nuevas características y funcionalidades en <a href="http://labs.adobe.com/wiki/index.php/AIR_2:Release_Notes">Adobe Labs</a>.<br />
<br />
En esta nueva versión, beta 2, las mejoras que se le hicieron las podemos dividir en tres secciones: impresión mejorada desde aplicaciones AIR, soporte mejorado en las comunicaciones por socket, mejoras en los TextInput y en el soporte para IME.<br />
<br />
Lo requerido para comenzar a utilizar esta nueva versión y probarla es que descarguen el <a href="http://labs.adobe.com/downloads/air2.html">SDK de AIR 2 Beta 2</a>, si utilizan Flash Builder o Flex Builder deben sustituir los archivos que se encuentran en la versión de SDK que utiliza de forma predeterminada Flex Builder.<br />
<br />
Inicialmente, en la etiqueta principal del Application Descriptor hay que modificar la versión para la cuál compilan la aplicación y utilizar, ahora "2.0beta2" -&gt; xmlns="http://ns.adobe.com/air/application/2.0beta2".<br />
<br />
Si por alguna razón, las aplicaciones que hayan creado con la beta 1 de AIR 2 no se ejecutan en el runtime de AIR 2 beta 2, deberán recompilarlas ahora apuntando al beta 2.<br />
<br />
Más adelante colocaremos algunas observaciones sobre esta nueva versión.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.riactive.com/2010/02/02/adobe-air-2-beta2/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Comunicación entre SWF&#8217;s con LocalConnection</title>
		<link>http://www.riactive.com/2010/02/01/comunicacion-entre-swfs-con-localconnection/</link>
		<comments>http://www.riactive.com/2010/02/01/comunicacion-entre-swfs-con-localconnection/#comments</comments>
		<pubDate>Mon, 01 Feb 2010 15:30:52 +0000</pubDate>
		<dc:creator>yacaFx</dc:creator>
				<category><![CDATA[CS4]]></category>
		<category><![CDATA[Flex]]></category>
		<category><![CDATA[as2]]></category>
		<category><![CDATA[as3]]></category>
		<category><![CDATA[flash]]></category>
		<category><![CDATA[localconnection]]></category>
		<category><![CDATA[tutorials]]></category>
		<category><![CDATA[yacaFx]]></category>

		<guid isPermaLink="false">http://www.riactive.com/?p=745</guid>
		<description><![CDATA[La semana pasada surgió la duda en twitter de cómo pueden comunicarse dos o mas SWF's embebidos en una página y eso me dio la idea para hacer este post =)

<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"
			id="fm_LocalConnectionSender_723073218"
			class="flashmovie"
			width="300"
			height="200">
	<param name="movie" value="http://www.riactive.com/wp-content/uploads/2010/01/LocalConnectionSender.swf" />
	<!--[if !IE]>-->
	<object	type="application/x-shockwave-flash"
			data="http://www.riactive.com/wp-content/uploads/2010/01/LocalConnectionSender.swf"
			name="fm_LocalConnectionSender_723073218"
			width="300"
			height="200">
	<!--<![endif]-->
		
	<!--[if !IE]>-->
	</object>
	<!--<![endif]-->
</object>

<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"
			id="fm_LocalConnectionReceiver_1695158843"
			class="flashmovie"
			width="300"
			height="200">
	<param name="movie" value="http://www.riactive.com/wp-content/uploads/2010/01/LocalConnectionReceiver.swf" />
	<!--[if !IE]>-->
	<object	type="application/x-shockwave-flash"
			data="http://www.riactive.com/wp-content/uploads/2010/01/LocalConnectionReceiver.swf"
			name="fm_LocalConnectionReceiver_1695158843"
			width="300"
			height="200">
	<!--<![endif]-->
		
	<!--[if !IE]>-->
	</object>
	<!--<![endif]-->
</object>

<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"
			id="fm_LocalConnectionAS2Sample_1653563002"
			class="flashmovie"
			width="400"
			height="50">
	<param name="movie" value="http://www.riactive.com/wp-content/uploads/2010/01/LocalConnectionAS2Sample.swf" />
	<!--[if !IE]>-->
	<object	type="application/x-shockwave-flash"
			data="http://www.riactive.com/wp-content/uploads/2010/01/LocalConnectionAS2Sample.swf"
			name="fm_LocalConnectionAS2Sample_1653563002"
			width="400"
			height="50">
	<!--<![endif]-->
		
	<!--[if !IE]>-->
	</object>
	<!--<![endif]-->
</object>
Este tipo de comunicación [...]]]></description>
			<content:encoded><![CDATA[<p>La semana pasada surgió la duda en twitter de cómo pueden comunicarse dos o mas SWF's embebidos en una página y eso me dio la idea para hacer este post =)</p>

<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"
			id="fm_LocalConnectionSender_873378522"
			class="flashmovie"
			width="300"
			height="200">
	<param name="movie" value="http://www.riactive.com/wp-content/uploads/2010/01/LocalConnectionSender.swf" />
	<!--[if !IE]>-->
	<object	type="application/x-shockwave-flash"
			data="http://www.riactive.com/wp-content/uploads/2010/01/LocalConnectionSender.swf"
			name="fm_LocalConnectionSender_873378522"
			width="300"
			height="200">
	<!--<![endif]-->
		
	<!--[if !IE]>-->
	</object>
	<!--<![endif]-->
</object>

<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"
			id="fm_LocalConnectionReceiver_1328269155"
			class="flashmovie"
			width="300"
			height="200">
	<param name="movie" value="http://www.riactive.com/wp-content/uploads/2010/01/LocalConnectionReceiver.swf" />
	<!--[if !IE]>-->
	<object	type="application/x-shockwave-flash"
			data="http://www.riactive.com/wp-content/uploads/2010/01/LocalConnectionReceiver.swf"
			name="fm_LocalConnectionReceiver_1328269155"
			width="300"
			height="200">
	<!--<![endif]-->
		
	<!--[if !IE]>-->
	</object>
	<!--<![endif]-->
</object>

<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"
			id="fm_LocalConnectionAS2Sample_2069954509"
			class="flashmovie"
			width="400"
			height="50">
	<param name="movie" value="http://www.riactive.com/wp-content/uploads/2010/01/LocalConnectionAS2Sample.swf" />
	<!--[if !IE]>-->
	<object	type="application/x-shockwave-flash"
			data="http://www.riactive.com/wp-content/uploads/2010/01/LocalConnectionAS2Sample.swf"
			name="fm_LocalConnectionAS2Sample_2069954509"
			width="400"
			height="50">
	<!--<![endif]-->
		
	<!--[if !IE]>-->
	</object>
	<!--<![endif]-->
</object><br />
Este tipo de comunicación es bastante sencilla y podemos lograrlo haciendo uso de la clase LocalConnection. Primero tengamos un acercamiento a esta clase y veamos cómo funciona.<br />
<span id="more-745"></span><br />
Una Local Connection es la vía que tendrán 2 o más SWF (en una o varias instancias de un flashplayer como en un browser y un flash projector o AIR) para poder comunicarse entre ellos siempre y cuando estén ejecutándose en la misma computadora.  </p>
<p>Recordemos que por la naturaleza de los SWF’s podemos comunicarlos sin importar si fueron generados vía Flex o Flash.</p>
<p>Como mínimo es necesario tener 2 swf para lograr esta comunicación y uno al menos debe fungir como mensajero (sender) y otro como escucha (listener) aunque ambos pueden realizar ambas tareas y es posible tener más de 2 swf en este proceso.</p>
<p>Algo que podría sonar atractivo si estamos trabajando en equipo y no todos usan AS3 es el hecho de que todos los objetos de tipo LocalConnection  creados con cualquier versión de AS (1, 2 o 3) son compatibles.</p>
<p>Esta clase tiene dos métodos importantes para lograr la comunicación entre los SWF’s:  send() y connect().</p>
<p>El método send() se  encarga de enviar la petición de comunicación y requiere de 2 parámetros, el primero que será el nombre del canal y el segundo el método que se ejecutará en el swf destino. En caso de que el método destino requiera de parámetros estos deben de agregarse después del segundo parámetro y separado por comas.</p>
<p><img src="http://www.riactive.com/wp-content/uploads/2010/01/LCimg1.png" alt="LCimg1" width="490" height="241" class="aligncenter size-full wp-image-789" /></p>
<p>El método connect() estará en el swf destino y recibirá como parámetro el nombre de la conexión que se estableció en el método send() en el swf origen.  Con esto establecido el sfw destino ya estará habilitado para escuchar las peticiones a través de un LocalConnection.</p>
<p>Es importante que en el swf destino el objeto LocalConnection se le indique, a través de la propiedad “client”, en donde se encuentra el método que se está invocando desde el swf origen. Esto aplica si nuestro método está dentro de un paquete o en el mismo nivel donde se está instanciando el objeto LocalConnection. Otra consideración que se debe tener con este método es que debe ser declarado público.</p>
<p>Si al objeto LocalConnection destino no le indicamos la ubicación del método y este no lo declaramos como público la aplicación nos arrojará un error.</p>
<p><img src="http://www.riactive.com/wp-content/uploads/2010/01/LCimg2.png" alt="LCimg2" width="490" height="241" class="aligncenter size-full wp-image-788" /></p>
<p>Ya entendida la funcionalidad de la clase y la lógica de este tipo de aplicaciones es hora de tirar algunas líneas de código y de probar esta funcionalidad. </p>
<p>Tendremos 3 archivos swf’s uno generado desde Flash y otro generado desde Flex  y ambos tendrán los 2 roles necesarios para esta aplicación (Mensajero y Escucha) y el tercer SWF será generado desde Flash usando AS2 y solo con el rol de Escucha. Para efectos de este tutorial los tres SWF estarán integrados en el mismo archivo HTML.</p>
<p>Se me ocurre que esta aplicación sea algo similar a una calculadora donde en un primer SWF se ingresen 2 datos y se envíen al segundo SWF donde se elija la operación a realizar y regrese el resultado al primer SWF donde se le sumara una cantidad y el resultado final se enviará a un tercer SWF el cual solo mostrará este resultado final. Cada SWF tendrá un color de fondo distinto para poder identificarlos y están embebidos independientemente. El SWF1 es verde, el SWF2 es azul y el SWF3 es anaranjado</p>
<p><img src="http://www.riactive.com/wp-content/uploads/2010/01/tutoLocalConnectionMockup.png" alt="tutoLocalConnectionMockup" width="745" height="317" class="aligncenter size-full wp-image-786" /></p>
<p>El código para el SWF1 hecho en Flash con AS3 queda así:</p>

<div class="wp_syntax"><div class="code"><pre class="xml" style="font-family:monospace;">//Creamos el objeto tipo LocalConnection
var cnxLocal:LocalConnection = new LocalConnection();
&nbsp;
enviarBtn.addEventListener(MouseEvent.CLICK, enviaDatos);
&nbsp;
function enviaDatos(evt:MouseEvent):void
{
/*Enviamos datos a través del canal(conexión) 'cnxIda' 
indicándole que método ejecutar y los parametros a recibir*/
	cnxLocal.send('cnxIda', 'muestraDatos', dato1.text, dato2.text);
&nbsp;
/*De una vez referenciamos la conexión o canal para 
recibir los datos de regreso que enviará la app en Flex*/
	cnxLocal.connect('cnxVuelta');
	cnxLocal.client = this;
};
&nbsp;
/*Este método muestra el resultado calculado en el SWF2, 
hace un nuevo calculo y envía ese resultado al SWF3*/
function muestraResultadoRegresado(resultado:String):void
{
	resultado1.text = resultado;
&nbsp;
	var resultadoFinal:String;
	resultadoFinal = String(Number(resultado)*10);
&nbsp;
//Aquí es donde se envían los datos al SWF3
	cnxLocal.send('cnxFinal', 'muestraDatosFinales', resultadoFinal);
}</pre></div></div>

<p>El código para el SWF2 hecho en Flex con AS3 queda así:</p>

<div class="wp_syntax"><div class="code"><pre class="xml" style="font-family:monospace;"> import mx.controls.Alert;
&nbsp;
//Creamos el objeto tipo LocalConnection
            private var _cnxLocal:LocalConnection = new LocalConnection();
&nbsp;
            private function _initApp():void
            {
//Nos conectamos a la conexión definida en el SWF 1 para este SWF
                _cnxLocal.connect('cnxIda');
//Indicamos en donde esta el método invocado en SWF1
                _cnxLocal.client = this;
            }
&nbsp;
//Este es el método invocado desde SWF1 y está definido como público
            public function muestraDatos(datoE1:String, datoE2:String):void
            {
                dato1.text = datoE1;
                dato2.text = datoE2;
            }
&nbsp;
            private function _realizarCalculo(evt:MouseEvent):void
            {
                var resultado:Number;
                switch (evt.currentTarget.label)
                {
                    case '+':
                        resultado = Number(dato1.text) + Number(dato2.text);
                        break;
&nbsp;
                    case '-':
                        resultado = Number(dato1.text) - Number(dato2.text);
                        break;
&nbsp;
                    case '*':
                        resultado = Number(dato1.text) * Number(dato2.text);
                        break;
                    case '/':
                        resultado = Number(dato1.text) / Number(dato2.text);
                        break;
                }
                _regresaDatos(String(resultado));
            }
&nbsp;
//Este método regresa el resultado al SWF1
            private function _regresaDatos(resultado:String):void
            {
                Alert.show(resultado, 'Resultado del calculo:');
                _cnxLocal.send('cnxVuelta', 'muestraResultadoRegresado', resultado);
            }</pre></div></div>

<p>El código para el SWF3 hecho en Flash con AS2 queda así:</p>

<div class="wp_syntax"><div class="code"><pre class="xml" style="font-family:monospace;">//Creamos el objeto tipo LocalConnection
var cnxLocal:LocalConnection = new LocalConnection();
&nbsp;
//Nos conectamos a la conexión definida en el SWF 1 para este SWF
cnxLocal.connect('cnxFinal');
&nbsp;
cnxLocal.muestraDatosFinales = function(resultado) {
&nbsp;
//Se muestran en la caja de texto los datos recibidos
    resultadoFinal.text = resultado;
};</pre></div></div>

<p>Como puede apreciarse la comunicación entre uno o varios SWF's es muy sencilla y en este tutorial queda sentado que no importa si es AS2 o AS3, Flash o Flex donde generemos nuestras aplicaciones, la comunicación a través de LocalConnection es transparente =)</p>
<p>Esperamos que este tutorial te sea de utilidad y si tienes dudas o comentarios no dudes en preguntarnos, ya sea a través de los comentarios o vía twitter en @riactive.</p>
<p>Sean felices y... Happy Coding!!!</p>
<p>Sergio Brito AKA yacafx</p>
<p>------------------------------------------------------------------------------------------------------<br />
Los archivos fuente generados en este tutorial están disponibles para su descarga<br />
[<a href="wp-content/uploads/2010/01/LocalConnectionTutorialRiactive.zip">Source Files</a>]</p>
<p>Para la elaboración de este post usamos Flash, Flex Builder, Photoshop y <a href="http://www.balsamiq.com/products/mockups">Balsamiq Mockups</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.riactive.com/2010/02/01/comunicacion-entre-swfs-con-localconnection/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Tutorial: Como conectar Zend_AMF con Adobe Flex Builder 3</title>
		<link>http://www.riactive.com/2010/01/28/tutorial-como-conectar-zend_amf-con-adobe-flex-builder-3/</link>
		<comments>http://www.riactive.com/2010/01/28/tutorial-como-conectar-zend_amf-con-adobe-flex-builder-3/#comments</comments>
		<pubDate>Thu, 28 Jan 2010 20:43:16 +0000</pubDate>
		<dc:creator>Gz.Francisco</dc:creator>
				<category><![CDATA[Flex]]></category>
		<category><![CDATA[Flex Data Services]]></category>

		<guid isPermaLink="false">http://www.riactive.com/?p=736</guid>
		<description><![CDATA[Saludos a los flexeros del mundo, este es mi primer tutorial, como parte del Grupo de Usuarios de Adobe @RIActive.
Este tutorial está pensado para seguirse como receta de cocina y que en pocos pasos estén divirtiéndose trabajando con esta poderosa forma de conectar Flex con PHP.
Requisitos:

Tener ZEND Framework en su última versión y completo. La [...]]]></description>
			<content:encoded><![CDATA[<p>Saludos a los flexeros del mundo, este es mi primer tutorial, como parte del Grupo de Usuarios de Adobe <a href="http://twitter.com/riactive" target="_blank">@RIActive</a>.</p>
<p>Este tutorial está pensado para seguirse como receta de cocina y que en pocos pasos estén divirtiéndose trabajando con esta poderosa forma de conectar Flex con PHP.</p>
<p>Requisitos:</p>
<ul>
<li>Tener ZEND Framework en su última versión y completo. La razón de tenerlo completo radica en que cuando yo quise instalarlo y solo baje el paquete de ZEND_AMF me arrojaba constantemente errores de librerías requeridas. Para evitarnos eso vamos a conseguir toda la librería de Zend para no tener problemas. <a href="http://framework.zend.com/download/overview">http://framework.zend.com/download/overview</a></li>
<li>Un editor de texto plano o una IDE para PHP. <a href="http://www.eclipse.org/downloads/download.php?file=/technology/epp/downloads/release/galileo/SR1/eclipse-php-galileo-SR1-win32.zip">http://www.eclipse.org/downloads/download.php?file=/technology/epp/downloads/release/galileo/SR1/eclipse-php-galileo-SR1-win32.zip</a></li>
<li>Adobe Flex Builder 3. <a href="http://www.adobe.com/products/flex/">http://www.adobe.com/products/flex/</a></li>
<li>Un servidor http que tenga el motor de ejecución PHP compatible con la versión de  Zend (Yo use wamp). <a href="http://www.wampserver.com/en/download.php">http://www.wampserver.com/en/download.php</a></li>
</ul>
<p><span id="more-736"></span><br />
Contenido:</p>
<ol>
<li>Organizar es buena idea: Preparando a Zend.</li>
<li>MiClasePHP.php: Creando una clase personalizada de PHP</li>
<li>El marco de la puerta: Creando a Zend_AMF_Server</li>
<li>La perilla de la puerta: Configurando Flex</li>
<li>Con quien voy a hablar?: RemoteObject y la configuraciones.</li>
<li>@Flex: “¿Donde estas @PHP?”. @PHP: “Aquiiiiii!!”</li>
</ol>
<h3>Introducción</h3>
<p>Necesitas hacer llamada de una función que se encuentra en una clase PHP desde Flex y te preguntas ¿Cómo logro eso? Una de las diversas respuestas es: Zend_AMF</p>
<p>Zend_AMF es un paquete con el cual lograras hacer llamadas desde Flex a PHP. Zend es un framework para PHP muy potente, por lo tanto cuando el uso de los datos es extremo, esta es la mejor solución.</p>
<h3>Preparando a Zend</h3>
<p>Ok, ahora vamos con el primer paso operativo de esta receta.</p>
<p>En una carpeta del servidor http, colocaremos la carpeta llamada “Zend” la cual contendrá todo el framework que hemos bajado. Dentro del server colocaremos una carpeta que llamaremos “lib” la cual contendrá todas nuestras clases personalizadas.</p>
<p>Y por ultimo crearemos un archivo “zend_amf_server.php” que será el Zend_AMF_Server.</p>
<p><img src="http://l4c.me/uploads/carpetas-inicio-screenshot-1264655585_full550.jpg" alt="Carpetas incio" /></p>
<h2>Creando una clase personalizada de PHP</h2>
<p>Adentro de la carpeta “lib” crearemos una clase de PHP llamada “ClasePersonal” que tenga un método llamado “holaMundo” al cual se le pueda pasar un argumento de tipo string para ejecutar el ejemplo.</p>

<div class="wp_syntax"><div class="code"><pre class="xml" style="font-family:monospace;"><span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;?php</span></span>
<span style="color: #009900;">class ClasePersonal<span style="color: #66cc66;">&#123;</span></span>
<span style="color: #009900;">public function holaMundo<span style="color: #66cc66;">&#40;</span>$mensaje = <span style="color: #ff0000;">'Hi'</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#123;</span></span>
<span style="color: #009900;">$date = getdate<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;</span>
<span style="color: #009900;">return <span style="color: #ff0000;">'Hola desde PHP, Flex dijo: '</span>. $mensaje .<span style="color: #ff0000;">' el dia '</span>. $date<span style="color: #66cc66;">&#91;</span><span style="color: #ff0000;">&quot;seconds&quot;</span><span style="color: #66cc66;">&#93;</span>;</span>
<span style="color: #009900;"><span style="color: #66cc66;">&#125;</span></span>
<span style="color: #009900;"><span style="color: #66cc66;">&#125;</span></span>
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">?&gt;</span></span></pre></div></div>

<p>Como pueden observar es una clase cualquiera, no tiene alguna implementación especial o algo por el estilo.</p>
<h3>Creando a Zend_AMF_Server</h3>
<p>En lo personal ésta fue la parte más angustiante de todas, ya que por más que hacia copy-paste de código que obtenía en el sitio de Zend_AMF y de otros tutoriales que encontré, no salía correctamente y era porque a todos o les faltaba alguna línea u otros tenían una entrega del server distinta. La última línea de código de este PHP es la más importante de todas.</p>
<p><strong>“zend_amf_server.php” </strong>será el equivalente a <strong>“gateway.php”</strong> que utiliza AMFPHP. Es la puerta de acceso al server de Zend_AMF.</p>
<p>Este será un pequeño archivo PHP que dará el acceso a Flex. En 6 puntos a seguir estará configurado.</p>
<p>Primero incluimos la librería Zend.</p>

<div class="wp_syntax"><div class="code"><pre class="xml" style="font-family:monospace;">require_once 'Zend/Amf/Server.php';</pre></div></div>

<p>Segundo incluimos a nuestra clase personalizada.</p>

<div class="wp_syntax"><div class="code"><pre class="xml" style="font-family:monospace;">require_once 'lib/ClasePersonal.php';</pre></div></div>

<p>Tercero instanciamos al Zend server.</p>

<div class="wp_syntax"><div class="code"><pre class="xml" style="font-family:monospace;">$server = new Zend_Amf_Server();</pre></div></div>

<p>Cuarto le enviamos a nuestro nuevo server la clase personalizada.</p>

<div class="wp_syntax"><div class="code"><pre class="xml" style="font-family:monospace;">$server-<span style="color: #ddbb00;">&amp;gt;</span>setClass('ClasePersonal');</pre></div></div>

<p>Quinto establecemos el método de entrega del server.</p>

<div class="wp_syntax"><div class="code"><pre class="xml" style="font-family:monospace;">echo $server-<span style="color: #ddbb00;">&amp;gt;</span>handle();</pre></div></div>

<p>Y como producto obtendremos un “zend_amf_server.php” con las siguientes líneas de código:</p>

<div class="wp_syntax"><div class="code"><pre class="xml" style="font-family:monospace;"><span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;?php</span></span>
<span style="color: #009900;">require_once <span style="color: #ff0000;">'Zend/Amf/Server.php'</span>;</span>
<span style="color: #009900;">require_once <span style="color: #ff0000;">'lib/ClasePersonal.php'</span>;</span>
<span style="color: #009900;">$server = new Zend_Amf_Server<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;</span>
<span style="color: #009900;">$server-&amp;gt;setClass<span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">'ClasePersonal'</span><span style="color: #66cc66;">&#41;</span>;</span>
<span style="color: #009900;">echo $server-&amp;gt;handle<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;</span>
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">?&gt;</span></span></pre></div></div>

<p>&lt;mx:Nota&gt;Sí tienen muchas clases de PHP y no tienen deseos de incluirlas al script de PHP y luego enviarlas a Zend. Pueden eliminar el segundo punto y además modifican el quinto por la siguiente línea de código antes del método de entrega del server.</p>

<div class="wp_syntax"><div class="code"><pre class="xml" style="font-family:monospace;">$server-<span style="color: #ddbb00;">&amp;gt;</span>addDirectory('include/services/');</pre></div></div>

<p>&lt;/mx:Nota&gt;</p>
<h3>Configurando a Flex</h3>
<p>Para empezar debemos tener un proyecto de Flex abierto y crear un nuevo archivo con extensión XML adentro de la carpeta “src”.</p>
<p>Al siguiente archivo lo llamaremos “services-config.xml” (sin comillas) y será el encargado de decirle a Flex en donde se encuentra nuestro “zend_amf_server.php”</p>
<p>Este archivo es un documento en formato XML, dentro del cual colocaremos dos cosas importantes: La ruta del “zend_amf_server.php” y el nombre asignado a este canal.</p>
<p>En mi caso el XML contendrá lo siguiente:</p>

<div class="wp_syntax"><div class="code"><pre class="xml" style="font-family:monospace;"><span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;?xml</span> <span style="color: #000066;">version</span>=<span style="color: #ff0000;">&quot;1.0&quot;</span> <span style="color: #000066;">encoding</span>=<span style="color: #ff0000;">&quot;UTF-8&quot;</span><span style="color: #000000; font-weight: bold;">?&gt;</span></span>
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;services-config<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;services<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;service</span> <span style="color: #000066;">id</span>=<span style="color: #ff0000;">&quot;zend-service&quot;</span> <span style="color: #000066;">messageTypes</span>=<span style="color: #ff0000;">&quot;flex.messaging.messages.RemotingMessage&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span></span>
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;destination</span> <span style="color: #000066;">id</span>=<span style="color: #ff0000;">&quot;zend&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span></span>
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;channels<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;channel</span> <span style="color: #000066;">ref</span>=<span style="color: #ff0000;">&quot;zend-endpoint&quot;</span><span style="color: #000000; font-weight: bold;">/&gt;</span></span>
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/channels<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;properties<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;source<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>*<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/source<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/properties<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/destination<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/service<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/services<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;channels<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;channel-definition</span> <span style="color: #000066;">id</span>=<span style="color: #ff0000;">&quot;zend-endpoint&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span></span>
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;endpoint</span> <span style="color: #000066;">uri</span>=<span style="color: #ff0000;">&quot;http://localhost/zend_amf_server.php&quot;</span><span style="color: #000000; font-weight: bold;">/&gt;</span></span>
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/channel-definition<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/channels<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/services-config<span style="color: #000000; font-weight: bold;">&gt;</span></span></span></pre></div></div>

<p>Como podrán ver, el XML tiene 2 puntos críticos que son los nodos “endpoint” y “destination” dentro de los cuales se especifica la ruta del zend_amf_server y el nombre que se le asignara para identificarlo dentro de Flex.</p>
<p>Una vez creado y guardado el XML nos vamos a nuestro proyecto y damos clic derecho&gt;propiedades&gt;Flex Compiler y en donde dice “Aditional compiler arguments” (Argumentos de compilación adicionales) le agregamos el texto  -services "services-config.xml" (con los guiones y las comillas) y aceptamos los cambios con el botón Ok.</p>
<p><img src="http://l4c.me/uploads/argumentoscompilador-screenshot-1264654877_full550.jpg" alt="argumentos compilador" /></p>
<h3>RemoteObject y las configuraciones.</h3>
<p>Ahora sí, le daremos un nombre a cada clase que necesitemos. Claro esto también se puede hacer en AS pero aquí les va el ejemplo en MXML.</p>
<p>Primero crearemos la etiqueta RemoteObject.</p>

<div class="wp_syntax"><div class="code"><pre class="xml" style="font-family:monospace;"><span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;mx:RemoteObject</span> <span style="color: #000066;">id</span>=<span style="color: #ff0000;">&quot;ClasePersonal&quot;</span> <span style="color: #000066;">destination</span>=<span style="color: #ff0000;">&quot;zend&quot;</span> <span style="color: #000066;">source</span>=<span style="color: #ff0000;">&quot;ClasePersonal&quot;</span> <span style="color: #000066;">showBusyCursor</span>=<span style="color: #ff0000;">&quot;true&quot;</span> <span style="color: #000066;">fault</span>=<span style="color: #ff0000;">&quot;onConexError(event)&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span></span></pre></div></div>

<p>Aquí una pequeña lista de los atributos que necesitan y para qué sirven:</p>
<p>Id: El identificador con el que llamaran a la clase.</p>
<p>Source: El nombre de la clase PHP que vamos a llamar.</p>
<p>Fault: La función que arrojara para todos los métodos de esa clase, cuando exista algún error.</p>
<p>ShowBusyCursor: Es para que se muestre ocupado el mouse cuando está haciendo la llamada a los servicios PHP hasta que retorne algún valor/error.</p>
<p>Destination: Recuerdan que en el XML llamado “services-config.xml” tenía un nodo llamado destination, pues el valor del atributo de ese nodo es el que va aquí y sirve para indicarle a este RemoteObject a donde hay que enviar todas las consultas.</p>
<p>Una vez que ya colocamos la instancia de RemoteObject por clase PHP, pasaremos a indicar cuáles son los métodos de la clase PHP y como los llamaremos en Flex.</p>

<div class="wp_syntax"><div class="code"><pre class="xml" style="font-family:monospace;"><span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;mx:method</span> <span style="color: #000066;">name</span>=<span style="color: #ff0000;">&quot;holaMundo&quot;</span> <span style="color: #000066;">result</span>=<span style="color: #ff0000;">&quot;onResultHolaMundo(event)&quot;</span><span style="color: #000000; font-weight: bold;">/&gt;</span></span></pre></div></div>

<p>Atributos de la etiqueta Methods:</p>
<p>Id: El nombre del método de la clase PHP.</p>
<p>Result: la función de Flex, la cual será llamada cuando exista regreso en un método de la clase PHP</p>
<p>Fault: Es la función de Flex que será llamada cuando exista un error de conexión en especifico para ese método de la clase PHP. Este atributo es opcional ya que en la etiqueta RemoteObject definimos una función de error para todos los métodos de esta clase.</p>
<p>&lt;mx:Nota&gt;Estos pasos se tendrán que repetir para cada método y para cada clase de PHP.&lt;/mx:Nota&gt;</p>
<p>&lt;mx:Nota&gt;No olviden realmente definir las funciones en AS que son los resultados de las llamadas y las que son invocadas por errores.&lt;/mx:Nota&gt;</p>
<h3>Llamadas a las clases y los métodos.</h3>
<p>Bueno, con esto se ha terminado todas las configuraciones. Ahora nos enfocaremos a terminar el tutorial, con un pequeño ejemplo.</p>
<p>A nuestra aplicación vamos a crearle una función de nombre “init” que estará disponible para el evento creationComplete de la aplicación, está se encargara de hacer la llamada al método de la clase PHP.</p>

<div class="wp_syntax"><div class="code"><pre class="xml" style="font-family:monospace;">private function init():void{
ClasePersonal.holaMundo(&quot;Hola PHP&quot;);
}</pre></div></div>

<p>Como nosotros ya definimos la función de AS que será la que responda nuestra llamada al método de la clase PHP, solo haremos que en un Label nuevo, le asigne el texto que nos regreso el método de PHP y después lo instanciaremos en el escenario de Flex.</p>

<div class="wp_syntax"><div class="code"><pre class="xml" style="font-family:monospace;">private function onResultHolaMundo(event:ResultEvent):void{
var etiqueta:Label = new Label();
etiqueta.text = event.result.toString();
this.addChild(etiqueta);
}</pre></div></div>

<p>Con esta parte estará completo nuestro MXML. Obteniendo así el script final.</p>

<div class="wp_syntax"><div class="code"><pre class="xml" style="font-family:monospace;"><span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;?xml</span> <span style="color: #000066;">version</span>=<span style="color: #ff0000;">&quot;1.0&quot;</span> <span style="color: #000066;">encoding</span>=<span style="color: #ff0000;">&quot;utf-8&quot;</span><span style="color: #000000; font-weight: bold;">?&gt;</span></span>
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;mx:Application</span> <span style="color: #000066;">xmlns:mx</span>=<span style="color: #ff0000;">&quot;http://www.adobe.com/2006/mxml&quot;</span> <span style="color: #000066;">layout</span>=<span style="color: #ff0000;">&quot;vertical&quot;</span> <span style="color: #000066;">creationComplete</span>=<span style="color: #ff0000;">&quot;init()&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span></span>
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;mx:Script<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
<span style="color: #339933;">&lt;![CDATA[</span>
<span style="color: #339933;">import mx.controls.Alert;</span>
<span style="color: #339933;">import mx.rpc.events.ResultEvent;</span>
<span style="color: #339933;">import mx.controls.Label;</span>
<span style="color: #339933;">import mx.rpc.events.FaultEvent;</span>
<span style="color: #339933;">private function onConexError(event:FaultEvent):void{</span>
<span style="color: #339933;">&lt;em&gt;//Agregado para que arroje el error.&lt;/em&gt;</span>
<span style="color: #339933;">Alert.show(event.fault.faultDetail, event.fault.faultString);</span>
<span style="color: #339933;">}</span>
<span style="color: #339933;">private function onResultHolaMundo(event:ResultEvent):void{</span>
<span style="color: #339933;">var etiqueta:Label = new Label();</span>
<span style="color: #339933;">etiqueta.text = event.result.toString();</span>
<span style="color: #339933;">this.addChild(etiqueta);</span>
<span style="color: #339933;">}</span>
<span style="color: #339933;">private function init():void{</span>
<span style="color: #339933;">ClasePersonal.holaMundo(&quot;Hola PHP&quot;);</span>
<span style="color: #339933;">}</span>
<span style="color: #339933;">]]&gt;</span>
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/mx:Script<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;mx:RemoteObject</span> <span style="color: #000066;">id</span>=<span style="color: #ff0000;">&quot;ClasePersonal&quot;</span> <span style="color: #000066;">destination</span>=<span style="color: #ff0000;">&quot;zend&quot;</span> <span style="color: #000066;">source</span>=<span style="color: #ff0000;">&quot;ClasePersonal&quot;</span> <span style="color: #000066;">showBusyCursor</span>=<span style="color: #ff0000;">&quot;true&quot;</span> <span style="color: #000066;">fault</span>=<span style="color: #ff0000;">&quot;onConexError(event)&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span></span>
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;mx:method</span> <span style="color: #000066;">name</span>=<span style="color: #ff0000;">&quot;holaMundo&quot;</span> <span style="color: #000066;">result</span>=<span style="color: #ff0000;">&quot;onResultHolaMundo(event)&quot;</span><span style="color: #000000; font-weight: bold;">/&gt;</span></span>
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/mx:RemoteObject<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/mx:Application<span style="color: #000000; font-weight: bold;">&gt;</span></span></span></pre></div></div>

<h3>Comentarios y posibles problemas.</h3>
<p>&lt;mx:posibleproblema&gt;Recuerden configurar su aplicación Flex como una aplicación de servidor PHP, ya que la seguridad de Flash Player no les permitirá acceder a un servidor http sino está corriendo bajo el mismo dominio, y si necesitan hacer llamadas entre dominios necesitaran un XML llamado “domain-config.xml” si lo requieren postéenlo y se los proporciono.&lt;/mx:posibleproblema&gt;</p>
<p>&lt;mx:comentario&gt;Yo me he fijado que la primera vez que se hace llamada a algún método de nuestras clases, lo hace 2 veces y es porque en la primera establece la conexión y en la segunda ya hace la llamada. En la segunda llamada a algún método de la clase PHP ya no hará esto.&lt;/mx:comentario&gt;</p>
<p>Asi les debe quedar la carpeta de su servidor al final. (Ahora ya tiene la version de depuracion de Flex porque lo creamos como una aplicacion de server PHP)</p>
<p><img src="http://l4c.me/uploads/carpetas-final-screenshot-1264655638_full550.jpg" alt="server final" /></p>
<p>Lo demás lo pueden colocar con todo gusto y les apoyare con mi poca pero insistente experiencia xD</p>
<p>Hasta pronto, nos leemos en mi siguiente post. Byte.</p>
<p>Gracias a <a href="http://twitter.com/eternalmoon_" target="_blank">@eternalmoon_</a> por su participación en la corrección de este tutorial.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.riactive.com/2010/01/28/tutorial-como-conectar-zend_amf-con-adobe-flex-builder-3/feed/</wfw:commentRss>
		<slash:comments>9</slash:comments>
		</item>
		<item>
		<title>Blink de Banamex hecho en Flex</title>
		<link>http://www.riactive.com/2010/01/27/blink-de-banamex-hecho-en-flex/</link>
		<comments>http://www.riactive.com/2010/01/27/blink-de-banamex-hecho-en-flex/#comments</comments>
		<pubDate>Wed, 27 Jan 2010 20:49:50 +0000</pubDate>
		<dc:creator>Edgar Parada</dc:creator>
				<category><![CDATA[Flex]]></category>
		<category><![CDATA[General]]></category>
		<category><![CDATA[Noticias]]></category>

		<guid isPermaLink="false">http://www.riactive.com/?p=717</guid>
		<description><![CDATA[En esta ocasión queremos platicar de un proyecto llamado Blink de Banamex, el cuál esperamos que marque un precedente para todos los desarrolladores Flex en México ya que es la primera vez que una institución financiera (de las más grandes del país) prueba esta tecnología en web a nivel masivo, anteriormente se había utilizado en [...]]]></description>
			<content:encoded><![CDATA[<p>En esta ocasión queremos platicar de un proyecto llamado <strong>Blink de Banamex</strong>, el cuál esperamos que marque un precedente para todos los desarrolladores Flex en México ya que es la primera vez que una institución financiera (<em>de las más grandes del país</em>) prueba esta tecnología en web a nivel masivo, anteriormente se había utilizado en Intranets y algunos portales más pequeños.</p>
<div align="center"><img src="http://www.riactive.com/wp-content/uploads/2010/01/imagen_1.jpg" alt="imagen_1" title="imagen_1" width="513" height="330" class="aligncenter size-full wp-image-718" /></div>
<p>A primera vista podemos destacar una interfaz atractiva que <strong>no se parece</strong> a los clásicos portales tradicionales de banco, ya que Blink es un banco virtual que no tiene sucursales toda la actividad se realiza por internet, su lema dice <strong>“Don’t Bank, Blink!”</strong><br />
<span id="more-717"></span></p>
<h3>Flex para el Frontend</h3>
<p>Si accedemos a la <a href="https://www.blink.com/btrial/">versión de prueba</a> del servicio podremos jugar con la interfaz de usuario que muestra todas las posibilidades del banco virtual en un componente acordeón horizontal, seguramente de <a href="http://code.google.com/p/flexlib/">Flex Lib</a> o desarrollado de manera interna porque recordemos que el acordeón nativo no tiene esa funcionalidad.</p>
<div align="center"><img src="http://www.riactive.com/wp-content/uploads/2010/01/imagen_3.jpg" alt="imagen_3" title="imagen_3" width="513" height="330" class="aligncenter size-full wp-image-720" /></div>
<p>El manejo de los colores para sugerir la <em>usabilidad</em> de la aplicación es una de las características que salta a primera vista, en los grids hay diferentes tonalidades de acuerdo a la gama de colores seleccionados e inclusive es posible cambiar el color de toda la interfaz de acuerdo al estado de ánimo del usuario, un detalle bastante cool por cierto <img src='http://www.riactive.com/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /><br />
En cuando a la experiencia de usuario podemos rescatar ciertas interacciones tipo <em>drag&#038;drop</em> y algunos detalles de sensibilidad de acuerdo a la posición del cursor muy agradables. Hay algunos <em>dashboards</em> de la interfaz para revisar los índices de IPC, Dow Jones y NASDAQ, aunque en futuras versiones se agradecerían <em>drill downs</em> para hacer más dinámico el control de los datos.</p>
<h3>Acceso a Datos</h3>
<p>El acceso a datos en una aplicación que maneja muchas transacciones tiene que ser <strong>algo de lo más importante a considerarse</strong> y por el tipo de desempeño que vemos en <a href="https://www.blink.com/">Blink</a> podríamos apostar <em>nuestros 2 centavos</em> a que están usando <strong>Remoting</strong> en alguna de sus variantes (Blaze, WebOrb, LCDS...)<br />
Otro punto notable es que al cargar la aplicación, desde que se ejecuta podemos notar cierto bootstrapping de elementos comunes como iconografía y algunos estilos y controles, de otra manera no podríamos explicarnos su buen desempeño inclusive con anchos de banda algo limitados.<br />
Queda el pendiente de revisar la aplicación con datos reales puesto que utilizamos la versión de prueba pero esperamos que se comporte igual de bien al momento de estar “transaccionando”.</p>
<div align="center"><img src="http://www.riactive.com/wp-content/uploads/2010/01/imagen_4.jpg" alt="imagen_4" title="imagen_4" width="513" height="330" class="aligncenter size-full wp-image-721" /></div>
<h3>Redes Sociales</h3>
<p>Ninguna aplicación que se precie de ser <strong>2.0</strong> en este momento puede ignorar el poder de las redes sociales. En el caso de <a href="https://www.blink.com">Blink</a> ya están usando <strong>Twitter</strong> y <strong>Facebook</strong>, aunque hay que decirlo todavía a un nivel muy básico. Yo esperaría que en un futuro la integración fuera tal que inclusive cuando hicieras una transacción, el sevicio te mandara instantáneamente un DM por Twitter como alternativa al clásico SMS que utilizan la mayoría de bancas electrónicas.<br />
Así mismo sería interesante que hubiera un apartado de wishlists de tus amigos en FaceBook que te permitiera rápidamente acceder a tiendas en línea a través del portal de Blink. En definitiva el target al cuál va orientado este servicio (<em>estudiantes universitarios y recién egresados</em>) poco a poco exigirá a sus desarrolladores mayor integración con Social Media y esperemos ver innovaciones interesantes al respecto.</p>
<div align="center"><img src="http://www.riactive.com/wp-content/uploads/2010/01/imagen_6.jpg" alt="imagen_6" title="imagen_6" width="512" height="330" class="aligncenter size-full wp-image-723" /></div>
<h3>Tecnologías Móviles</h3>
<p>En este rubro <a href="https://www.blink.com">Blink</a> le apuesta a una buena estrategia abarcando las 3 plataformas de smartphones con más usuarios en este momento: <strong>iPhone, BlackBerry y Windows Mobile.</strong><br />
La aplicación de iPhone que fue la que tuvimos oportunidad de probar mantiene buenas críticas en la App Store y llega a ser un buen complemento a la aplicación de stocks original del dispositivo. Destaca también el que incluye un lector de <strong>RSS</strong> para mostrar las noticias financieras más relevantes así como los tipos de cambio del día.</p>
<div align="center"><img src="http://www.riactive.com/wp-content/uploads/2010/01/imagen_7.jpg" alt="imagen_7" title="imagen_7" width="436" height="197" class="aligncenter size-full wp-image-724" /></div>
<h3>Conclusiones</h3>
<p>En definitiva <a href="https://www.blink.com">Blink</a> nos ha gustado mucho, hace tiempo que los portales financieros en México solamente se ocupaban del tema de seguridad y responsabilidad social, dejando muy olvidado el tema de experienciencia de usuario. <strong>Esperamos en un futuro ver más apuestas por Flex en proyectos en México</strong> que permitan ver las bondades de esta tecnología. Así mismo los invitamos a que nos dejen un comentario sobre su opinión al respecto.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.riactive.com/2010/01/27/blink-de-banamex-hecho-en-flex/feed/</wfw:commentRss>
		<slash:comments>16</slash:comments>
		</item>
	</channel>
</rss>
