現在s2flex2はBeta1で、AMF0のgatewayとして実装されています。
何度かエントリーにも書いていますがAMF0接続だと、Gatewayを通じてサーバから返ってくるオブジェクトは、型情報が失われてObject型になってしまいます。
AMF0でなんとか型情報を保持する方法を模索していたのですが、先週s2flex2のコミッタになったarkwさんがはやくもAMF3のgatewayを実装してくれました\(^o^)/。
AMF3のgatewayに対して、S2Componentタグ(AMF3版)で接続すると
サーバから返されるObjectがちゃんと型情報を保持してくれるようになります。
S2Componentタグで接続方式でAMF0を指定していた部分をAMF3に変更します。
_con = new NetConnection();
_con.objectEncoding = ObjectEncoding.AMF3;
あとは接続先のGatewayがAMF3の形式で返してくるので
これまでB1で使っていたの足し算サンプルでもAddDtoとして受け取れるようになりました。
AMF0のときはObject型なので、取得した値を参照します。
public function onResult(ret:Object){
ans_txt.text=ret.result.sum;
}
AMF3のときは、resultをAddDto型で受け取り使用することができます。
public function onResult(ret:Object){
var addDto:AddDto = ret.result;
ans_txt.text=addDto.sum.toString();
}
パッケージの変更などやサンプルでの調整をもう少しして週明けくらいには
新ベータ版として出せるようになると思います。
arkwさんに大感謝です。
AS3とJavaObjectのマッピングについて再度考える
http://www.noridon.net/weblogs/archives/2006/02/as3javaobject.html
この記事に対するコメント