nod::ぶろぐ::RIA::Flash/Flex/Ajax

FlashやFlex,(Ajax),S2Flex2,ActionScript3,yui-frameworks,Akabanaプロジェクトなどのメモ帳

Flex2でJava <=>ActionScript3のマッピングをする方法

CFAdapterを利用することで、Flex2でJavaのRemoteObjectを呼び出すことはできるようになりました。
でも、ActionScriptのクラスをパラメータとして渡すと、JavaのクラスとうまくマッピングできずASObjectになっていました。

Flex1.5では、ActionScriptのクラスで_remoteClassを宣言することでうまくマッピングできていました。
Flex2.0では、同じようにやってもうまくいきませんでした。

ActionScript3で変更になったようです。
registerClassAlias を使うことでうまくできるようになりました。

Flex1.5でやっていた、_remoteClassを宣言する方法ではパラメータは渡るのですが、ASObjectにマッピングされてしまいます。

ActionScriptのクラスで_remoteClassを宣言する

package amftest.samples { public class Person { var name:String; var age:int; var birthday:Date; var _remoteClass:String; public function Person(){ this._remoteClass= "amftest.samples.Person"; } : : }

RemoteObjectの宣言(mxml)

<mx:RemoteObject id="hello" destination="Hello" result="DataResult(event)" />

RemoteObjectの呼び出し(mxml)

hello.setPerson(person);

RemoteObjectで呼び出されるJavaのクラス

public String setPerson(Person person){ }

public String setPerson(ASObject aso){
}

上記のように書くと、Personを引数にしたメソッドが呼ばれて欲しいのですが実際にはASObjectが引数のメソッドが呼ばれます。

setPerson(person:Person) -> setPerson(ASObject aso)   <-こっちが呼ばれる。
setPerson(person:Person) -> setPerson(Person person)  <-こっちが呼ばれて欲しい!

JavaAdapterを使い始めたころからずっと悩んでいました。

あきらめてFlex User Groupに書いたCFAdapterのインストールに追記しようかと思いCFAdapterとともにDownloadできるサンプル(UserManager)のクラスをみると、registerClassAlias を使ってマッピングをしているようです。

早速mxmlのリファレンスをみて試してみました。

そうしたら....

できました(^ー^)v

Flex2では、registerClassAliasを使うことでJavaのクラスとActionScriptのマッピングができるようです。

package amftest.samples { import flash.net.*; public class Person { var name:String; var age:int; var birthday:Date; public function Person(){ registerClassAlias("amftest.samples.Person", Person); } : : }

AS1のときは、ObjectRegisterClassを使っていました。
FlashMX 2004/AS2では、ムービークリップのリンケージでクラスを関連付けしていました。
Flex1.5/AS2では、_remoteClassをを使いました
Flex2.0/AS3ではregisterClassAliasで関連付けしました。

ASのバージョンとアプリケーションでどうするのが正解なのかわかりません。
誰か知っている人、またはまとめてあるページがあったら教えてください。m(__)m

あとは配列を渡したときに、配列の要素が正しく変換されるのかを確認したいと思います。


Macromedia Flex 2.0 MXML and ActionScript Language Reference
registerClassAlias
http://livedocs.macromedia.com/labs/1/flex/langref/flash/net/package.html#registerClassAlias()

Download Flex Builder 2 - ColdFusion Adapter Sample Files
http://labs.macromedia.com/wiki/index.php/CF_Adapter#Sample_Applications

配列の罠(ひがやすをblog)
http://d.hatena.ne.jp/higayasuo/20041014#1097753400

Posted by nod at 2005年12月11日 15:46 | コメント (0) | トラックバック (0) | Clip!! | Clip!! | このエントリーを含むはてなブックマーク |digg it! |del.icio.us it!

この記事に対するコメント

この記事に対するコメントはまだありません。


コメントを投稿する




保存しますか?



この記事のトラックバックURL


この記事に対するトラックバック

この記事に対するトラックバックはまだありません。



Flex.org - The Directory for Flex Get Adobe Flash Player Made with dreamweaverMade with fireworksPowered by Movable Type 3.33-jaPowered by Wandering Wind
Copyright : [Articles] (C) nod::ぶろぐ::RIA::Flash/Flex/Ajax All Rights Reserved.
[Comments/Trackbacks] ... Authors of those have rights.