Código :
/*
Remoting class Action Script 3
*/
package com.data {
import flash.events.Event;
import flash.events.NetStatusEvent;
import flash.net.NetConnection;
import flash.errors.IllegalOperationError;
import flash.net.Responder;
import flash.net.ObjectEncoding;
public class Remoting extends NetConnection {
/*
Properties Variables
*/
private var _str_server:String = "";
private var _str_gateWayPath:String = "";
private var _str_serviceName:String = "";
private var _str_netStatusResponse:String = "";
private var _obj_remotingResoult:Object;
private var _res_objectResponder:Responder;
/*
Object Variables
*/
public static var obj_remotingInstance:Remoting;
/*
getInstace Remoting
*/
public static function getInstance():Remoting {
if (obj_remotingInstance == null) {
obj_remotingInstance = new Remoting(new Enforcer());
}
return obj_remotingInstance;
}
/*
Constructor
*/
public function Remoting(enforcer:Enforcer = null):void {
super();
}
/*
initialize the component
*/
public function initialize(gatewayString:String, serverString:String = ""):void{
if(_res_objectResponder == null){
this.objectEncoding = ObjectEncoding.AMF0;
_str_server = serverString;
_str_gateWayPath = gatewayString;
_res_objectResponder = new Responder(onDataLoaded, onFault);
this.connect (_str_server + _str_gateWayPath);
this.addEventListener (NetStatusEvent.NET_STATUS, netStatusHandler);
} else {
throw new IllegalOperationError("Remoting already initialized!");
}
}
/*
Handlers
Status of the connection.
*/
private function netStatusHandler (event:NetStatusEvent):void {
_str_netStatusResponse = event.info.code;
this.dispatchEvent(new Event("onStatus"));
}
/*
*/
private function onDataLoaded (o:Object):void {
_obj_remotingResoult = o;
this.dispatchEvent(new Event("onData"));
}
/*
*/
private function onFault(o:Object):void{
throw new Error("Error on Service!");
}
/*
Properties
*/
public function get responder():Responder {
return _res_objectResponder;
}
public function get data():Object{
return _obj_remotingResoult;
}
public function get server():String{
return _str_server;
}
public function set server(serverString:String):void{
_str_server = serverString;
}
public function get gateway():String{
return _str_gateWayPath;
}
public function set gateway(gatewayString:String):void{
_str_gateWayPath = gatewayString;
}
public function get service():String{
return _str_serviceName;
}
public function set service(serviceString:String):void{
_str_serviceName = serviceString;
}
}
}
internal class Enforcer {
}
Asi se usa:
Código :
import com.data.Remoting;
var r:Remoting = Remoting.getInstance();
r.initialize("flashservices/gateway.php","domain");
r.call("clase.metodo", r.responder, "3"); //
r.addEventListener("onData", upaleFunciona);
/* ---------------------------------------------------------------------------------- */
function upaleFunciona(e:Event):void {
var o:Object = r.data;
for each (var s:* in o) {
trace(o + " ------- " + s);
for each (var t:* in s) {
trace(t + " >>> " + s);
}
}
}
Esta es solo la clase de conexion...
Saludos

