今天写项目时用到了REMOTING,写了个AS3.0的REMOTING类:
首先建立RemotingService.as文件:
/**/
/*
remoting类
负责FLASH与数据库交互
*/
package net.smilecn.net ... {
import flash.net.*;
import flash.events.*;
import net.smilecn.event.RemotingEvent;
public class RemotingService extends NetConnection...{
//##########################################################################
//
//变量
//
//##########################################################################
private var _method:String;
private var object:Object;
private var pc:Responder;
/**//*
构造
@param _gatewayURL remoting网关地址
@param amf 使用AMF3或AMF0
*/
public function RemotingService(gatewayURL:String,amf:int) ...{
objectEncoding=amf;
connect(gatewayURL);
pc=new Responder(onResult, onFault);
}
//##########################################################################
//
//方法
//
//##########################################################################
/**//*
调用remoting方法
@param _method 调用remoting方法名
@param _servicePath php类路径
*/
public function calls(servicePath:String,method:String,args:Array):void ...{
object=new Object();
this._method = method;
call(servicePath,pc,args);
}
/**//*
调用成功
*/
private function onResult(re:Object):void ...{
object._method=this._method;
object.re=re;
dispatchEvent(new RemotingEvent(RemotingEvent.SUCCESS, object));
}
/**//*
调用失败
*/
private function onFault(fe:Object):void ...{
object._method=this._method;
object.fe=fe;
dispatchEvent(new RemotingEvent(RemotingEvent.FAILED, object));
}
}
}
remoting类
负责FLASH与数据库交互
*/
package net.smilecn.net ... {
import flash.net.*;
import flash.events.*;
import net.smilecn.event.RemotingEvent;
public class RemotingService extends NetConnection...{
//##########################################################################
//
//变量
//
//##########################################################################
private var _method:String;
private var object:Object;
private var pc:Responder;
/**//*
构造
@param _gatewayURL remoting网关地址
@param amf 使用AMF3或AMF0
*/
public function RemotingService(gatewayURL:String,amf:int) ...{
objectEncoding=amf;
connect(gatewayURL);
pc=new Responder(onResult, onFault);
}
//##########################################################################
//
//方法
//
//##########################################################################
/**//*
调用remoting方法
@param _method 调用remoting方法名
@param _servicePath php类路径
*/
public function calls(servicePath:String,method:String,args:Array):void ...{
object=new Object();
this._method = method;
call(servicePath,pc,args);
}
/**//*
调用成功
*/
private function onResult(re:Object):void ...{
object._method=this._method;
object.re=re;
dispatchEvent(new RemotingEvent(RemotingEvent.SUCCESS, object));
}
/**//*
调用失败
*/
private function onFault(fe:Object):void ...{
object._method=this._method;
object.fe=fe;
dispatchEvent(new RemotingEvent(RemotingEvent.FAILED, object));
}
}
}
as3.0使用dispatchEvent要传参数需要自己定义一个EVENT类,建立RemotingEvent.as文件
/**/
/*
由RemotingService广播事件
Main接收广播
*/
package net.smilecn.event ... {
import flash.events.Event;
public class RemotingEvent extends Event ...{
//##########################################################################
//
// 常量
//
//##########################################################################
public static const SUCCESS:String = "success";
public static const FAILED:String = "failed";
//##########################################################################
//
// 变量
//
//##########################################################################
private var _object:Object;
/**//*
@param type事件类型
@param object事件参数
*/
public function RemotingEvent(type:String,object:Object)...{
super(type);
_object=object;
}
//##########################################################################
//
// 方法
//
//##########################################################################
public function get object():Object ...{
return _object;
}
}
}
由RemotingService广播事件
Main接收广播
*/
package net.smilecn.event ... {
import flash.events.Event;
public class RemotingEvent extends Event ...{
//##########################################################################
//
// 常量
//
//##########################################################################
public static const SUCCESS:String = "success";
public static const FAILED:String = "failed";
//##########################################################################
//
// 变量
//
//##########################################################################
private var _object:Object;
/**//*
@param type事件类型
@param object事件参数
*/
public function RemotingEvent(type:String,object:Object)...{
super(type);
_object=object;
}
//##########################################################################
//
// 方法
//
//##########################################################################
public function get object():Object ...{
return _object;
}
}
}
最后建一个DOCUMENT CLASS,调用REMOTING类就可以了。