2009-03-02 9 views
1

Flexでオブジェクトの階層をシリアル化し、バイナリデータをサーバー上の格納/取り出し用のURLに送信し、データを逆シリアル化して、元の状態?Flexオブジェクトをシリアル化してアプリケーション状態を保存/復元する

オブジェクトをXML形式に変換することは可能ですが(まだ試していませんが)、XMLを解析してオブジェクトを手動で再構築することは避けたいと考えています。オブジェクトをシンプルなバイナリ形式にシリアライズ/デシリアライズできる機能を持つことはいいことです(これまでのJavaではこれほど似通ったことはありましたが、私が気に入ったほど簡単ではありませんでした)。 Perlの 'eval'関数は、私が探しているコードに似ていますが、もちろんコードを保存することはありません。

は擬似コードでは、ここで私がやりたいものだ:

private var contentToSave:HBox = new HBox(); 

private function saveState(event:Event):void { 
    var toSave:HBox = this.contentToSave; 
    var data:? = /* serialize 'toSave' ActionScript classes to binary data*/; 
    sendDataToServer(data, filename); 
} 
private function restoreState(filename):void { 
    var data:? = getDataFromServer(filename); 
    var savedData:HBox = /* deserialize binary 'data' to ActionScript classes */; 
    this.contentToSave = savedData; 
} 

答えて

1

ascorelibでJSONベースのserializationパッケージを試してみてください。

[...]しかし、私は、XMLを解析しても他のネイティブ型のようなXMLを扱うAS手動

をオブジェクトの再構築を避けるために願っています。安心してください。 XMLは、サーバーを引き離して元に戻すデータを処理するための好ましい方法です。もちろん、ascorelibはJSONクラスを提供しています。だから、あなたもそれを見てみてください。

Perlの 'eval'関数は、私が探しているコードに似ていますが、もちろんコードを保存しません。

IIRC、evalは、ECMAScript仕様の一部です(Javascriptで確認できます)。しかし、AS3.0ではありません。以前のバージョン(s?)ではある程度存在していましたが、もはやサポートされていません。

+0

回答ありがとうございます!私が理解していることを確認するために、HBoxをXMLに変換してサーバーに保存すると、XMLを取得して、HBox(およびすべての子)を解析したり、手動でオブジェクトを実行したりせずにオブジェクトとして復元できます創造? – bedwyr

+1

いいえ、HBoxをXMLに変換するだけではありません。そのために関数を実装する必要があります。私が意味することは、AS3ではXML処理が苦痛であるということでした。 – dirkgently

+0

ああ、そうです。ご協力いただきありがとうございます。 – bedwyr

4

ByteArray.writeObject()をご覧ください。渡されたオブジェクトをAMF形式でバイト配列に保存します。私はこの関数をあまり使用しませんでしたが、どのような種類のオブジェクトを直列化できるのか正確にはわかりませんが、必ずしもすべてではありません。

関連する問題