0

私は、すべてのゲームプレイ間で、ゲーム全体で一定のデータのように、世界に関する多くのデータを保存する方法が必要な Flash ゲームを作成しています。オブジェクト階層にグループ化された多数の値 (整数、浮動小数点数、文字列)。重要なのは、開発中に (通常のテキスト ファイルや XML のように) 編集しやすくし、データの読み取り中のパフォーマンス オーバーヘッドをゼロにし、起動時のオーバーヘッドを最小限に抑えることです。

質問は次のように要約できます: SWF ファイル内のすべてのフィールドが既に入力された状態ですぐに使用できる ActionScript オブジェクトを配置する方法 (それらに対して init 関数を実行する必要なし)。

最初に頭に浮かぶのは、MXML がその方法であるということですが、考えられるオーバーヘッドは言うまでもなく、ジョブを完了するためにどのように使用すればよいかわかりません (MXML は遅いと読んだことがあります)。物事を解析する必要なしにそうすることさえ可能ですか? そうでない場合、最良の代替手段は何ですか? XML? ジェイソン?カスタムフォーマットとパーサー関数?

4

1 に答える 1

0

保存したいクラスにIExternalizableを実装させます(必要な関数を実際に書くことを忘れないでください ;))。registerClassAliasを使用して、クラスを AMF エンコーディングで使用できるようにします。

次に、クラスを ByteArray に書き込み (ByteArray.writeObject() を使用)、圧縮します。その後、ByteArray をファイルに書き込みます。

ファイルを読み取るときは、コンテンツを ByteArray に読み取り、decompress() を使用してから、「readObject() as YOURCLASS」を使用してインスタンスを取得します。

必要に応じて圧縮を省略できますが、保存されているデータによっては大きな違いが生じます。私が現在取り組んでいるプロジェクトでは、圧縮されていないファイルは約 6MB、圧縮されたバージョンはわずか 178KB です。

于 2013-05-17T05:31:58.007 に答える