2010-02-16 36 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及其功能的文档。

关于最后一部分,我不知道任何现成的解决方案将复杂数据保存到硬盘。如果您愿意,我可以为您提供更具体的信息。