2007年09月13日

Flash | 続・Remoting Classes for Flash CS3

OZACC.blog: Remotingな仕事

フリーランス時代にトーサキと仕事したとき、Flash Remotingを使うと関数を呼び出してレスポンスを取得するまでのprogressが取れないのが気になる点として挙げられた。

あれから3年半。ActionScript 3になって、ようやくこの機能を実現できる目処が付いた。
以前に、Strippers Remoting ClassesというFlash 9からAMFを使ったRPC呼び出しを行うクラスを作ったけど、これはflash.net.NetConnectionを使って実装していた。NetConnectionクラスを使えばAMFプロトコル自体は全く意識しなくてもいいのだが、AMFに含まれる細かい情報を扱えないため、Django AMFの独自機能を実装する上で障害になっていた。
で、ここ数日ちょっと余裕ができたので、AMF <-> ByteArrayを相互変換できるようにし、flash.net.URLLoaderを使ってサーバとやりとりするように作り直している。ByteArrayクラス自体にオブジェクトのAMFシリアラズ/ディシリアライズメソッドが備わっているので、AMFメッセージの構造さえ知っていれば比較的容易に実装できる。URLLoaderクラスを使えばProgressイベントが取れるため、前述の機能が実現できるようになった。

サーバから受け取ったAMFメッセージのバイナリデータを自分でパースするので、NetConnectionクラスやFlexのRemoteObjectクラスでは取れなかったAMFのヘッダを自在に扱うことができるようにもなった。
このAMFヘッダをHTTPヘッダのように扱えば、前に考えていたキャッシュ的な機能を実現できるかも知れない。

Posted by otsuka : 19:55 | Comment (0) | Trackback (0)
Comment









名前、アドレスを登録しますか?