2010-02-16 34 views
1

我剛開始使用我的第一個Adobe Air項目(我是純貿易的純粹AS3開發人員)。我打算建立一個支持圖層的圖像編輯器。我想知道將整個項目(包括圖層數據)存儲到用戶硬盤的最佳方式是什麼。爲Adobe Air創建自定義文件格式

我想知道是否有任何優點/缺點爲我的應用程序創建自定義文件格式。這個想法是我將能夠將整個項目存儲在一個文件中。這將通過將元數據寫入文件的標題來完成,例如圖像尺寸,圖層名稱,圖層數據偏移量等。

我正在努力關注可能出現的問題,例如維護向後兼容性添加新的項目功能/元等

我想我問是否有任何建議或經驗與Adobe Air的創建自定義文件格式,如果有任何其他'開箱'將複雜數據保存到用戶硬盤的解決方案。

謝謝。

回答

5

也許你可以做一個自定義的二進制格式並將ByteArray寫入磁盤。這應該是快速和緊湊的。我從來沒有寫過一個自定義的二進制格式,但我敢肯定這裏有人可以引導你完成這個最佳實踐。您可以使用writeUTFwriteUTFBytes將圖層排列的字符串描述保存到ByteArray,並且您可以使用BitmapData's getPixels(),因爲它會返回ByteArray。

想到的

A「解決辦法」的想法是創建一個檔案uzing的as3 zip package將包含層爲PNG圖像/ JPEG文件(可能使用圖像as3corelib編碼器)描述文件(哪些層應該和一個XML文件去哪裏,什麼混合/透明度等)。儘管這可能有點長。

HTH, 喬治

+0

如果沒有二進制格式的理由(稍微難以從中提取信息),則將帶有描述符+資產的zip +1。 – 2011-05-05 12:46:20

0

我已經寫了幾個自定義的二進制格式的爲我的項目。您需要首先爲您的文件創建一個包含頭文件元數據的頭文件。結帳File Structure of an MP3 file。它可能讓你瞭解如何組織你的文件。我認爲你的圖層將對應於圖中的MP3幀,因爲我可以看到數據重複的部分。

Flex爲您提供了一個選項,將類標記爲[RemoteObject]並以序列化的形式將其寫入磁盤。但我發現它太大了。我製作了一個ByteArray並單獨編寫了頭文件數據,並且使用這種方法我能夠保存近200字節。

請確保您閱讀了關於ByteArray及其功能的文檔。

關於最後一部分,我不知道任何現成的解決方案將複雜數據保存到硬盤。如果您願意,我可以爲您提供更具體的信息。