Flex2がBeta1になってからしばらく経ち、試行錯誤でやっと開発環境ができてきました。
これまでAlpha1で作成していたものの移行も少しずつできてきたので、これまでできている部分を遅ればせながらコミットしました。
このエントリーを書いたときにはEventの受け渡し方法がわからず、サーバロジックを呼び出したあとに結果を受け取ることができなかったのですがdispatchEventを使うことでなんとかできました。
タグで指定された、イベント(result,fault)をサーバロジック実行時のResponderに直接渡すのがうまくできませんでした。
なのでResponderに設定された関数からdispatchEventを利用してresult,faultを呼び出すように変更したところうまく動くようになりました。\(^o^)/
まずは実際に呼び出す部分です。
これまでは、Responderのコンストラクタで指定するResult,Faultに、タグで指定されたresult,faultを直接指定しようとしていました。
<s2:SimepleAMF id="amf" result="onResultData(event)" fault="onFaultData(event)" ..../>
上記のタグ例ですと、onResultData(event),onFaultData(event)を直接Responderに渡そうとしていたのです。
方法がわからなかったので、以下のようにResponderにはタグクラス内のFunctionを呼び出してその中でdispatchEventを発行します。
そうするとタグで指定されたFunctionを呼び出すことができました。
public function remoteCall(methodName:Object, ...args):void {
if(_con==null){
initConnection();
}
var callMethod:String = this.destination +"." +methodName;
var responder:Responder =
new Responder(this.onResult,this.onFault);
if(args.length>0){
_con.call(callMethod,responder,args);
}else{
_con.call(callMethod,responder);
}
}
public function onResult(resultData:Object){
var resultEvent:ResultEvent=
new ResultEvent(resultData,null,null);
dispatchEvent(resultEvent);
}
public function onFault(faultData:Object){
var faultEvent:FaultEvent =
new FaultEvent(faultData,null,null);
dispatchEvent(faultEvent);
}
今日、SVNにコミットしたのは以下のプロジェクトになります。
S2flex2_swc
Flexライブラリプロジェクト作成しました。これまでのRemoteObjectの形式(AMF 0)で接続するタグ用のプロジェクトです。
現在のところ、
mx.rpc.remoting.mxml.RemoteObjectをextendsしたSimpleAMFが
実際に使うことができるものになります。
Flexライブラリプロジェクトというくらいなので、swcを作ることができると思うのですが現在設定がわかりません。
なので、antを利用してswcを作るようにしてあります。
compcのパラメータがalpha1とBeta1では全然異なっていました。(-_-;)
S2flex2_examples
S2fledx2_swcで生成した、タグを使うサンプルです。 いまはS2flex2_examples.mxmlしかありません。localhostで動いてるopenAMFのサンプル(TestBean)に接続して
getTestValueメソッドを呼び出すようにしています。
タグは以下のように記述しています。
<s2:SimpleAMF id="amf" result="onResult(event)" destination="org.openamf.examples.TestBean" showBusyCursor="false" gatewayUrl="http://localhost:8080/openamf/gateway" />
これでやっとスタート地点に立てたかなと思うので今後はこれをもとに
- S2OpenAMFに接続してみる。
- コンパイル時に指定しているflex-services.xmlを利用できるようにする
この記事に対するコメント