Hoy he tenído un rato para buscar algo de información y empezar a coquetear con Flex y AMFPHP y la verdad es que el resultado ha sido grato.
Lo primero que hice fue instalar amfphp en mi sistema. Para ello bajé la version 1.2 de AMFPHP, la descomprimí y copie sus 3 carpetas dentro mi carpata flashservices. (Por cierto, me sorpendió gratamente encontrar el navegador de servicios)
Obviamente me descargué flex desde Adobe Labs Flex Builder y el player 8.5 de flash (bueno ese ya lo tenía :p ) e instalé ambos.
En primer lugar empezaremos a crear el servicio de romoting de nuestro hola mundo... creé algo sencillo tal como:
Guardamos como "HolaMundo.php" en nuestra carpeta flashservices/services y... voila ya tenemos nuestro primer servicio en AMFPHP. Básicamente este servicio se encargará de recibir un parametro y devolver un saludo.
Lo siguiente era crear un nuevo proyecto flex y empezar a experimentar. Para mi sorpresa la cosa fue realmente facil.
A través del Sr Google encontré un articulo (no recuerdo donde) que indicaba como conectar flex con remoting con lo que saqué la siguiente clase.
-
package {
-
-
import flash.net.NetConnection;
-
import flash.net.ObjectEncoding
-
-
public class RemotingConnection extends NetConnection
-
{
-
public function RemotingConnection( sURL:String )
-
{
-
objectEncoding = ObjectEncoding.AMF0;
-
if (sURL) connect( sURL );
-
}
-
-
public function AppendToGatewayUrl( s : String ) : void
-
{
-
//
-
}
-
-
public function AddHeader() : void
-
{
-
}
-
-
public function ReplaceGatewayUrl() : void
-
{
-
}
-
-
}
-
}
Una vez creada la clase dentro de nuestro proyecto creamos el siguiente archivo mxml:
-
<?xml version="1.0" encoding="utf-8"?>
-
<mx :Application xmlns:mx="http://www.adobe.com/2006/mxml" xmlns="*">
-
</mx><mx :VBox width="100%" height="100%">
-
</mx><mx :HBox>
-
<mx :Label text="Escribe tu nombre"/>
-
<mx :TextInput id="entrada" width="282"/>
-
<mx :Button label="Saludar" height="20" click="realizarLlamada(entrada.text)" />
-
</mx>
-
<mx :TextArea width="467" height="76" id="salida"/>
-
-
<mx :Script>
-
<![CDATA[
-
import mx.managers.CursorManager;
-
public var gateway : RemotingConnection;
-
public function realizarLlamada(_quien:String) :void{
-
gateway = new RemotingConnection( "http://www.alexdw.com/flashservices/gateway.php" );
-
//gateway = new RemotingConnection( "http://localhost/flashservices/gateway.php" );
-
CursorManager.setBusyCursor();
-
gateway.call( "HolaMundo.saludar", new Responder(ok,ko),_quien);
-
}
-
public function ok(o:Object) : void {
-
CursorManager.removeBusyCursor();
-
salida.text =o.toString()
-
}
-
public function ko(o:Object) : void {
-
CursorManager.removeBusyCursor();
-
salida.text = "Se produjo un error al hacer la llamada al metodo"
-
}
-
]]>
-
</mx>
Compilamos el proyecto y ya tenemos nuestro primer proyecto en flex 2.0 y amfphp
Ver ejemplo (necesario tener flash player 8.5)
Descargar codigo fuente
Si ven algo extraño o no comprenden algo.. no duden en dejar un comentario






Una forma de reducir bastante el código a utilizar para la invocación de servicios es heredando de AbstractService y utilizando la nueva clase Proxy (que viene a ser lo que hasta ahora había sido siempre el método __resolve) y que nos permite invocar remotamente métodos no declarados en el lado del cliente.
Un ejemplo con código http://www.code4net.com/archives/000118.html
En cualquier caso en f2b2 existe un bug con amf0 que no permite la serialización de custom objects en dirección servidor -> cliente (pero si cliente -> servidor )
Saludos!
Bueno ahora ya existen muchísimas cosas más que han dejado a un lado todo esto que mencionas, sin embargo lo encontré interesante para aquellos quienes hacen sus pininos con las ondas del flex, flash, AS3 etc etc etc…. a ver si nos detallas después algo de esto nuevo…vale!
Saludos!
Que tal Flüge, ha llovido bastante desde que publiqué este post
Desde luego queda pendiente escribir algún post sobre Flex 3 y Zend Framework AMF que es con lo que ando liado últimamente.
A ver si este 2009 que llega da las oportunidades para poder dedicarle un poco más de tiempo al blog
Saludos