用amfphp时,一个界面上要同时取得多个数据结果集,要定义多个remoteobject对象吗?
类似于下面这样的remoteobject定义:
var remoteServer:RemoteObject=new RemoteObject();remoteServer.destination="amfphp";remoteServer.source="InfoMethods";remoteServer.getUserInfo.send();remoteServer.addEventListener(FaultEvent.FAULT, faultForContactDB);remoteServer.addEventListener(ResultEvent.RESULT, resultHandler);
package test{ import mx.rpc.events.FaultEvent; import mx.rpc.events.ResultEvent; import mx.rpc.remoting.RemoteObject; public class RemoteManager { private static var instance:RemoteManager=null; public function RemoteManager(innerClass:SingletonInnerClass):void { if (innerClass == null) { throw new Error("can't create RemoteManager instance"); } } /** * 设计为单例 */ public static function getInstance():RemoteManager { if (instance == null) { instance=new RemoteManager(new SingletonInnerClass()); } return instance; } /** * 有需要的话追加参数 */ public function send(url:String, method:String, successFunction:Function, faultFunction:Function,params:Object):void { // 这里面创建RemoteObject等对象 var remoteObject:RemoteObject=new RemoteObject(); // 设置相应的其他属性(此处省略) 包括Operation remoteObject.addEventListener(ResultEvent.RESULT, successFunction); remoteObject.addEventListener(FaultEvent.FAULT, faultFunction); } } // 外部访问不到 class SingletonInnerClass{};} import flash.events.Event; // 调用的事宜代码:RemoteManager.getInstance().send(url, method,successFunction,faultFunction);private function successFunction(event:Event):void{}private function faultFunction(event:Event):void{}// 或者使用匿名函数RemoteManager.getInstance().send(url, method,function (event:Event):void{},function (event:Event):void{},params);
[解决办法]
补充一下:
如果想做的更完美可以在send方法里面这样写:
public function send(url:String, method:String, successFunction:Function, faultFunction:Function,params:Object):void{ // 这里面创建RemoteObject等对象 var remoteObject:RemoteObject=new RemoteObject(); // 设置相应的其他属性(此处省略) 包括Operation remoteObject.addEventListener(ResultEvent.RESULT, function (event:ResultEvent):void { // 此处可以做一些通用的处理 // 忽略 // 把event里面的信息取出来传下去 successFunction(event.message); }); remoteObject.addEventListener(FaultEvent.FAULT, function (event:FaultEvent):void { // 通用此处做一些通用的处理,比如失败了,如果提示信息,显示错误等等 // 忽略 // 把event里面的信息取出来传下去 faultFunction(event.message) });}