2013-05-16 61 views
0

我正在製作一款Flash遊戲,我需要一種方法來存儲大量有關世界的數據,如所有遊戲中所有遊戲中恆定的數據。很多值(整數,浮點數,字符串),分組在對象層次結構中。重點是在開發過程中輕鬆編輯(如普通文本文件或XML),並且在讀取數據時性能開銷爲零,並且在啓動時的開銷最小。將數據存儲在SWF文件中而不需要解析它們

問題可以簡化爲:如何將隨時可用的ActionScript對象與SWF文件中已經填充的所有字段(無需在其上運行初始化函數)配合使用?

首先想到的是MXML就是這樣,但我不知道應該如何使用它來完成工作 - 更不用說可能的開銷(我讀過MXML很慢)。甚至有可能這樣做,而不需要解析東西?如果不是,最好的選擇是什麼? XML? JSON?自定義格式和分析器功能?

+0

MXML不是存儲數據,而是關於實例化圖形組件。你爲什麼不創建一個持有常量並編輯這個類的類? – Kodiak

+0

你有可能在空中做到這一點。 –

+0

您可以創建自定義類並將其保存到共享對象(如果使用AIR,則爲文本文件)。這很容易做到。 – BadFeelingAboutThis

回答

0

讓您想要保存的課程實現IExternalizable(並且不要忘記實際編寫必要的功能;))。使用registerClassAlias使該類可用於AMF編碼。

然後將該類寫入ByteArray(使用ByteArray.writeObject())並壓縮它。之後,將ByteArray寫入文件。

當讀取文件時,將內容讀入ByteArray,使用decompress(),之後使用「readObject()作爲YOURCLASS」來取回實例。

如果您願意,您可以省略壓縮,但根據存儲的數據,它會產生巨大的差異。在我目前正在研究的一個項目中,未壓縮文件大約需要6MB,壓縮版本只有178KB。

+0

似乎很容易。明天會檢查這種方法。謝謝。 – Xirdus

相關問題