<?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 &#187; Flex</title>
	<atom:link href="http://www.riactive.com/category/flex/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>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>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>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_1242118603"
			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_1242118603"
			width="300"
			height="200">
	<!--<![endif]-->
		
	<!--[if !IE]>-->
	</object>
	<!--<![endif]-->
</object>

<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"
			id="fm_LocalConnectionReceiver_1342656890"
			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_1342656890"
			width="300"
			height="200">
	<!--<![endif]-->
		
	<!--[if !IE]>-->
	</object>
	<!--<![endif]-->
</object>

<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"
			id="fm_LocalConnectionAS2Sample_769339487"
			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_769339487"
			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_468672064"
			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_468672064"
			width="300"
			height="200">
	<!--<![endif]-->
		
	<!--[if !IE]>-->
	</object>
	<!--<![endif]-->
</object>

<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"
			id="fm_LocalConnectionReceiver_1614071805"
			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_1614071805"
			width="300"
			height="200">
	<!--<![endif]-->
		
	<!--[if !IE]>-->
	</object>
	<!--<![endif]-->
</object>

<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"
			id="fm_LocalConnectionAS2Sample_428827285"
			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_428827285"
			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>
		<item>
		<title>AMFPHP y PHP 5.3</title>
		<link>http://www.riactive.com/2010/01/06/amfphp-y-php-5-3/</link>
		<comments>http://www.riactive.com/2010/01/06/amfphp-y-php-5-3/#comments</comments>
		<pubDate>Wed, 06 Jan 2010 22:14:28 +0000</pubDate>
		<dc:creator>yacaFx</dc:creator>
				<category><![CDATA[Actualizaciones]]></category>
		<category><![CDATA[Flex]]></category>

		<guid isPermaLink="false">http://www.riactive.com/?p=675</guid>
		<description><![CDATA[Como ya muchos saben AMFPHP lleva en el limbo cerca de 2 años cuando Wade Arnolds dejo el proyecto para colaborar directamente en la integracion de AMF con zend y en todo ese tiempo no ha existido algun update en el proyecto. 
Recordemos que AMFPHP es una implementación PHP de AMF(Action Message Format) para poder [...]]]></description>
			<content:encoded><![CDATA[<p>Como ya muchos saben <a href="http://amfphp.org/">AMFPHP</a> lleva en el limbo cerca de 2 años cuando <a href="http://wadearnold.com/blog/">Wade Arnolds</a> dejo el proyecto para colaborar directamente en la integracion de AMF con zend y en todo ese tiempo no ha existido algun update en el proyecto. </p>
<p>Recordemos que AMFPHP es una implementación PHP de AMF(<a href="http://en.wikipedia.org/wiki/Action_Message_Format">Action Message Format</a>) para poder hacer uso de PHP, en el caso de Flex a travez de Remote Objects y con Flash usando NetConnection.</p>
<p>Mientras tanto PHP como tal ha continuado con su evolución y derivado de esto en las instalaciones de AMFPHP haciendo uso de PHP 5.3 existen un par de errores que no permiten la correcta ejecucion de amfphp y podemos darnos cuenta de e esto al ejecutar el browser de clases pues nos arroja 2 errores.<br />
<span id="more-675"></span><br />
El error arrojado es "Function eregi_replace() is deprecated" y esto es por que a la función eregi_replace() ya no se la dará soporte y en PHP 6 desaparecerá. </p>
<p>Esta función sirve para reemplazar cadenas de texto haciendo uso de expresiones regulares o strings; por lo que para poder solucionar este error podemos comentar las lineas de código (505 y 507)donde se muestra ese error o usar una función alternativa a <a href="http://php.net/manual/en/function.eregi-replace.php">eregi_replace()</a> como puede ser <a href="http://www.php.net/manual/en/function.preg-replace.php">preg_replace()</a> y el código quedaria de la siguiente manera:</p>
<p>****************************************************<br />
//Línea 505:<br />
//Antes:<br />
$comment = eregi_replace("\n[ \t]+", "\n", trim($comment));<br />
//Después:<br />
$comment = preg_replace("\n[ \t]i", "\n", trim($comment));</p>
<p>//Línea 507:<br />
//Antes:<br />
$comment = eregi_replace("[\t ]+", " ", trim($comment));<br />
//Después:<br />
$comment = preg_replace("[\t ]i", " ", trim($comment));</p>
<p>****************************************************</p>
<p>Al final tu método queda asi:</p>
<p>****************************************************<br />
function cleanComment($comment){<br />
		$comment = str_replace("/**", "", $comment);<br />
		$comment = str_replace("*/", "", $comment);<br />
		$comment = str_replace("*", "", $comment);<br />
		$comment = str_replace("\r", "", trim($comment));<br />
		$comment = preg_replace("\n[ \t]i", "\n", trim($comment));<br />
		$comment = str_replace("\n", "\\n", trim($comment));<br />
		$comment = preg_replace("[\t ]i", " ", trim($comment));</p>
<p>		$comment = str_replace("\"", "\\\"", $comment);<br />
		return $comment;<br />
	}<br />
****************************************************</p>
<p>eregi_replace es usado en la clase MethodTable en el método cleanComment ubicado en la ruta core\shared\util dentro de la carpeta de amfphp. El objetivo de este método es eliminar los caracteres que indican comentario (// o /* */) en un código para mostrar dichos comentarios "limpios" en el Browser de Clases</p>
<p>Ya para concluir este post, AMFPHP a pesar de ser un proyecto que lleva parado cerca de 2 años sigue siendo bastante funcional y sigue en el gusto de mucha gente para integrar servicios de PHP con Flex o con FLASH, esperemos que reviva pronto, aun a pesar de existir <a href="http://framework.zend.com/download/amf">ZEND</a> o <a href="http://code.google.com/p/sabreamf/">SABREAMF</a> de los cuales hablaremos posteriormente.</p>
<p>Feliz año nuevo lleno de exitos y.... Happy Coding!!!!!!!<br />
By yacaFx!!!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.riactive.com/2010/01/06/amfphp-y-php-5-3/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>¡¡Gana un lugar para el Latin Flash Latin Tour!!</title>
		<link>http://www.riactive.com/2009/11/11/%c2%a1%c2%a1gana-un-lugar-para-el-latin-flash-latin-tour/</link>
		<comments>http://www.riactive.com/2009/11/11/%c2%a1%c2%a1gana-un-lugar-para-el-latin-flash-latin-tour/#comments</comments>
		<pubDate>Wed, 11 Nov 2009 20:40:15 +0000</pubDate>
		<dc:creator>yacaFx</dc:creator>
				<category><![CDATA[Eventos]]></category>
		<category><![CDATA[Flash Lite]]></category>
		<category><![CDATA[Flash Media Server]]></category>
		<category><![CDATA[Flash Player]]></category>
		<category><![CDATA[Flex]]></category>
		<category><![CDATA[Flex Data Services]]></category>
		<category><![CDATA[General]]></category>
		<category><![CDATA[Noticias]]></category>
		<category><![CDATA[air]]></category>
		<category><![CDATA[video]]></category>

		<guid isPermaLink="false">http://www.riactive.com/?p=613</guid>
		<description><![CDATA[Te quedaste sin un lugar para el Latin Flash Latin Tour? 
¿Quieres estar alli?
Solo tienes que hacer un video con la tematica ¿Y para ti que es Flash? 
Dicho video no debe durar mas de 10 segundos y deberas subirlo al grupo en facebook y en You Tube etiquetandolo con el texto "latinflashtour" una vez [...]]]></description>
			<content:encoded><![CDATA[<p>Te quedaste sin un lugar para el Latin Flash Latin Tour? </p>
<p>¿Quieres estar alli?</p>
<p>Solo tienes que hacer un video con la tematica ¿Y para ti que es Flash? </p>
<p>Dicho video no debe durar mas de 10 segundos y deberas subirlo al grupo en <a href="http://www.facebook.com/inbox/?drop&amp;ref=mb#/event.php?eid=176057211981">facebook</a> y en <a href="http://www.youtube.com/">You Tube</a> etiquetandolo con el texto "latinflashtour" una vez que este arriba comparte la url a travez de twitter y claro deberas agregar el tag #latinflashtour o twitername @latinflashtour y seguirnospara que podamos ver tu video!</p>
<p>Los ganadores seran los 5 videos más originales y la fecha limite es este viernes!!</p>
<p>Solo quedan 5 lugares!!!!<br />
So... Are you in??</p>
<p>Latin Flash Tour MX!!! </p>
<div id="attachment_612" class="wp-caption aligncenter" style="width: 83px"><img src="http://www.riactive.com/wp-content/uploads/2009/11/flat_tw_bigger.jpg" alt="Latin Flash Tour" width="73" height="73" class="size-full wp-image-612" /><p class="wp-caption-text">Latin Flash Tour</p></div>
]]></content:encoded>
			<wfw:commentRss>http://www.riactive.com/2009/11/11/%c2%a1%c2%a1gana-un-lugar-para-el-latin-flash-latin-tour/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Adobe BluePrint</title>
		<link>http://www.riactive.com/2009/08/24/adobe-blueprint/</link>
		<comments>http://www.riactive.com/2009/08/24/adobe-blueprint/#comments</comments>
		<pubDate>Mon, 24 Aug 2009 07:06:48 +0000</pubDate>
		<dc:creator>yacaFx</dc:creator>
				<category><![CDATA[Flex]]></category>
		<category><![CDATA[Noticias]]></category>
		<category><![CDATA[blueprint]]></category>
		<category><![CDATA[labs]]></category>
		<category><![CDATA[yacaFx]]></category>

		<guid isPermaLink="false">http://www.riactive.com/?p=515</guid>
		<description><![CDATA[De un par meses a la fecha mis cargas de trabajo desarrollando en Flex se han incrementado en gran medida por lo que el uso de las propiedades y métodos de los componentes integrados en Flex se vuelve severamente importante y aun haciendo uso del CodeHinting del builder no es suficiente para obtener información del [...]]]></description>
			<content:encoded><![CDATA[<p>De un par meses a la fecha mis cargas de trabajo desarrollando en Flex se han incrementado en gran medida por lo que el uso de las propiedades y métodos de los componentes integrados en Flex se vuelve severamente importante y aun haciendo uso del CodeHinting del builder no es suficiente para obtener información del componente por lo que generalmente tenemos que salir a un buscador o a la ayuda en línea de Adobe para documentarnos mas acerca del componente usado y por tanto ocupamos algo de tiempo en hacerlo. Por lo que un plug in que nos permita hacer la busqueda dentro del Builder y nos permita interactuar con esos resultados sería fabuloso!!!.Para esto existe un nuevo proyecto gestandose dentro de los <a href="http://labs.adobe.com">Adobe Labs</a> que permite hacer busquedas integradas de los componentes usados mientras estamos programando. Este plug in se llama <a href="http://labs.adobe.com/technologies/blueprint/">Adobe BluePrint</a> y es una belleza! pues nos optimiza tiempos de desarrollo al momento de documentarnos sobre los componentes que integran Adobe Flex.</p>
<div class="wp-caption alignleft" style="width: 355px"><a href="http://labs.adobe.com/technologies/blueprint/"><img alt="Blueprint ScreenShoot!" src="http://labs.adobe.com/technologies/blueprint/images/blueprint_screen_345x160.jpg" width="345" height="160" /></a><p class="wp-caption-text">Blueprint ScreenShoot!</p></div> 
<p><span id="more-515"></span><br />
Blueprint es soportado por Flex Builder 3 y el Flash Builder 4 y permite  no solo saber información general acerca de los componentes sino ejemplos de código sobre la implementación de ellos. Los resultados de las busquedas son obtenidos desde la ayuda en linea de Adobe asi como de los sitios mas renombrados que hablan acerca de los componentes Flex. </p>
<p>BluePrint es el codename de este plugin en lo que termina su tiempo de desarrollo. Mientras tanto podemos leer más sobre esta útil herramienta en su <a href="http://labs.adobe.com/technologies/blueprint/">web</a>.  </p>
<p>Esten pendientes pues en la siguiente entrega mostraremos como se usa este valioso plug-in aunque puedes adelantarte en su <a href="http://labs.adobe.com/wiki/index.php/Blueprint:Using_Blueprint">wiki</a>.</p>
<p>Nos vemos pronto! pero pueden seguir este AUG  vía twitter en @riactive o en mi feed como @yacaFx!</p>
<p>Saludos y... Happy Coding!!!!<br />
Sergio Brito</p>
]]></content:encoded>
			<wfw:commentRss>http://www.riactive.com/2009/08/24/adobe-blueprint/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Reseña: Centerwave V &#8211; RIA para Callcenters</title>
		<link>http://www.riactive.com/2009/08/03/resena-centerwave-v-ria-para-callcenters/</link>
		<comments>http://www.riactive.com/2009/08/03/resena-centerwave-v-ria-para-callcenters/#comments</comments>
		<pubDate>Mon, 03 Aug 2009 18:29:22 +0000</pubDate>
		<dc:creator>Edgar Parada</dc:creator>
				<category><![CDATA[Flex]]></category>
		<category><![CDATA[Noticias]]></category>
		<category><![CDATA[air]]></category>

		<guid isPermaLink="false">http://www.riactive.com/?p=498</guid>
		<description><![CDATA[Hace unos días fuimos invitados a la presentación de Centerwave V, la cual es una aplicación RIA para centros de contacto (marcación predictiva, atención a clientes, carga de base de datos, etc.)
Fue muy interesante el ver la calidad de desarrollos Flex/AIR a los que estamos llegando en México donde se integran diversas tecnologías: servidores de [...]]]></description>
			<content:encoded><![CDATA[<p>Hace unos días fuimos invitados a la presentación de <a href="http://www.nuxiba.com/CW%20suite.html">Centerwave V</a>, la cual es una aplicación <strong>RIA</strong> para centros de contacto (marcación predictiva, atención a clientes, carga de base de datos, etc.)</p>
<p>Fue muy interesante el ver la calidad de desarrollos <a href="http://www.adobe.com/products/flex/">Flex/AIR</a> a los que estamos llegando en México donde se integran diversas tecnologías: <em>servidores de sockets, protocolos, dispositivos, etc.</em></p>
<p>Es una aplicación desarrollada por <a href="http://twitter.com/nuxiba">Nuxiba</a> y lidereada en su parte tecnológica por nuestro amigo <a href="http://twitter.com/creativePete">Pedro Jimenez</a> quién es uno de los desarrolladores <strong>Flex/Flash/AS3</strong> más fuertes que hemos tenido el gusto de conocer en nuestras reuniones.</p>
<p>Amablemente nos compartieron unos screenshots de la aplicación que anteriormente solo era para Windows y que ahora gracias a la combinación de Flex + AIR esta disponible para las tres plataformas: Windows, Mac y Linux. Juzguen ustedes mismos...</p>
<p><span id="more-498"></span></p>
<p><strong>Panel de Administración de Centerwave antes del makeover.</strong></p>
<p>Múltiples ventanas, falta de gráficas, componentes muy genéricos.</p>
<p><img src="http://www.riactive.com/wp-content/uploads/2009/08/administradorcenterware_antes.jpg" alt="administradorcenterware_antes" title="administradorcenterware_antes" width="512" height="384" class="aligncenter size-full wp-image-503" /></p>
<p><strong>Panel de Adminstración de Centerwave después del makeover con Flex + AIR.</strong></p>
<p>Pantalla única para centralizar la información, graficación con drill down sobre los datos, UI mucho más atractiva, mejor usabilidad y posibilidad de personalización para el cliente.</p>
<p><img src="http://www.riactive.com/wp-content/uploads/2009/08/administradorriacenterwarev.jpg" alt="administradorriacenterwarev" title="administradorriacenterwarev" width="512" height="360" class="aligncenter size-full wp-image-504" /></p>
<p><strong>Agente de Usuario de Centerwave antes del makeover.</strong></p>
<p>Interfaz confusa para el usuario, curva de aprendizaje poco óptima, solamente sobre plataformas windows, UI poco usable y poco atractiva.</p>
<p><img src="http://www.riactive.com/wp-content/uploads/2009/08/agentecenteware_antes.jpg" alt="agentecenteware_antes" title="agentecenteware_antes" width="512" height="384" class="aligncenter size-full wp-image-505" /></p>
<p><strong>Agente de Usuario de Centerwave después del makeover con Flex + AIR.</strong></p>
<p>Notificaciones sencillas, mejor usabilidad, UX mejorada para el usuario básico y para el usuario avanzado, curva de aprendizaje eficaz y posibilidad de branding sobre la aplicación, modalidad de trabajo agent y fullscreen.</p>
<p><img src="http://www.riactive.com/wp-content/uploads/2009/08/agentesriacenteware.jpg" alt="agentesriacenteware" title="agentesriacenteware" width="512" height="384" class="aligncenter size-full wp-image-506" /></p>
]]></content:encoded>
			<wfw:commentRss>http://www.riactive.com/2009/08/03/resena-centerwave-v-ria-para-callcenters/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Bootcamp Flex/AIR en Activ</title>
		<link>http://www.riactive.com/2009/07/17/bootcamp-flexair-en-activ/</link>
		<comments>http://www.riactive.com/2009/07/17/bootcamp-flexair-en-activ/#comments</comments>
		<pubDate>Fri, 17 Jul 2009 17:34:31 +0000</pubDate>
		<dc:creator>Edgar Parada</dc:creator>
				<category><![CDATA[Eventos]]></category>
		<category><![CDATA[Flex]]></category>
		<category><![CDATA[air]]></category>

		<guid isPermaLink="false">http://www.riactive.com/?p=451</guid>
		<description><![CDATA[Como algunos de ustedes saben además del grupo de usuarios RIActive, algunos de los integrantes del equipo también nos desempeñamos como instructores, consultores y/o desarrolladores de Activ. En esta ocasión queremos invitarlos a un Bootcamp que hemos estados preparando y del cuál pueden tener una muestra este post, el enfoque principal es Aprender a hacer [...]]]></description>
			<content:encoded><![CDATA[<p>Como algunos de ustedes saben además del grupo de usuarios <a href="http://www.riactive.com.mx">RIActive</a>, algunos de los integrantes del equipo también nos desempeñamos como instructores, consultores y/o desarrolladores de <a href="http://www.activ.com.mx">Activ</a>. En esta ocasión queremos invitarlos a un <strong>Bootcamp</strong> que hemos estados preparando y del cuál pueden tener una muestra <a href="http://www.riactive.com/2009/07/17/cliente-air-de-twitter-para-monitorear-conferencias/">este post</a>, el enfoque principal es <strong>Aprender a hacer una RIA con Flex/AIR</strong> y decidimos utilizar un API de un servicio muy popular actualmente llamado Twitter.</p>
<p>El conocimiento permite extenderse a la integración con otros servicios muy populares hoy en día: <em>Google Maps, Flickr, Facebook, YouTube, salesforce.com, Yahoo Maps, por mencionar algunos.</em></p>
<p>El Bootcamp se realizará muy pronto y tiene un cupo limitado. Para más información les sugerimos contactar vía Twitter a <a href="http://twitter.com/activmx">@activmx</a> o mandar un correo a <strong>info@activ.com.mx</strong></p>
]]></content:encoded>
			<wfw:commentRss>http://www.riactive.com/2009/07/17/bootcamp-flexair-en-activ/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>
