PrettyAMF
PrettyAMF.as
package org.flexcoder.flex2.rpc.remoting{
import flash.events.Event;
import flash.net.NetConnection;
import flash.net.ObjectEncoding;
import flash.net.Responder;
import flash.util.trace;
import mx.events.EventDispatcher;
import mx.rpc.AbstractService;
import mx.rpc.events.FaultEvent;
import mx.rpc.events.ResultEvent;
import mx.managers.CursorManager;
/**
* PrettyAMF
* @description nodさんの作っているSimpleAMFと違うため名前を変更
* 実は近いかもしれない・・?
* @author sato-shi
**/
dynamic public class PrettyAMF extends AbstractService
{
[DefaultTriggerEvent("result")]
[Event("fault")]
[Event("result")]
private var _con:NetConnection;
[Inspectable(type="String")]
public var gatewayUrl:String;
[Inspectable(type="Boolean")]
public var showBusyCursor:Boolean = true;
public function PrettyAMF(){
super();
}
private function initConnection(){
_con = new NetConnection();
_con.objectEncoding = ObjectEncoding.AMF0;
_con.connect(this.gatewayUrl);
}
public function remoteCall(methodName:String, ...args){
trace("> SimpleAMF#remoteCall");
if(_con==null){
initConnection();
}
if(showBusyCursor)CursorManager.setBusyCursor();
var responder:Responder = new Responder(this.onResult,this.onFault);
var callMethod:String = this.destination+"."+methodName;
if(args.length>0){
_con.call(callMethod,responder,args);
}else{
_con.call(callMethod,responder);
}
}
public function onResult(resultData:Object){
trace("> SimpleAMF#onResult");
if(showBusyCursor)CursorManager.removeBusyCursor();
var resultEvent:ResultEvent=new ResultEvent(resultData,null,null);
dispatchEvent(resultEvent);
}
public function onFault(faultData:Object){
trace("> SimpleAMF#onFault");
if(showBusyCursor)CursorManager.removeBusyCursor();
var faultEvent:FaultEvent = new FaultEvent(faultData,null,null);
dispatchEvent(faultEvent);
}
}
}ApplicationServices.mxml
<cairngorm:ServiceLocator xmlns:mx="http://www.macromedia.com/2005/mxml"
xmlns:cairngorm="org.nevis.cairngorm.business.*" xmlns:s2="org.flexcoder.flex2.rpc.remoting.*" >
<s2:PrettyAMF id="phoneServiceSeaser"
destination="addService"
gatewayUrl="http://localhost:8080/flex2_example/gateway"
showBusyCursor="true"
/>
<mx:RemoteObject id="phoneService"
destination="ColdFusion"
result="event.call.resultHandler(event)"
fault="event.call.faultHandler(event)"
showBusyCursor="true"
source="com.mycompany.phones.service.PhoneService"
/>
<mx:HTTPService id="dummyDelegate"
url="../assets/dummy.xml"
result="event.call.resultHandler( event )"
fault="event.call.faultHandler( event )"
showBusyCursor="true"
useProxy="false"
/>
</cairngorm:ServiceLocator>
勢いで作ったから微妙かも・・・。