我刚刚开始我的第一个Adobe Air项目(我是一个纯粹的AS3开发人员)。我打算构建一个支持图层的图像编辑器。我想知道将整个项目(包括图层数据)存储到用户硬盘的最佳方法是什么。
我想知道为我的应用程序创建自定义文件格式是否有任何优缺点。我的想法是,我将能够将整个项目存储在一个文件中。这将通过将元数据写入文件的标题来完成,例如图像尺寸,图层名称,图层数据偏移等...
我正在努力注意可能出现的问题,例如在添加新项目功能/元等后保持向后兼容性。
我想我在问人们是否有任何关于为Adobe Air创建自定义文件格式的建议或经验,以及是否有任何其他“开箱即用”的解决方案可以将'复杂'数据保存到用户硬盘。
感谢。
答案 0 :(得分:5)
可能您可以执行自定义二进制格式并将ByteArray写入磁盘。这应该是快速和紧凑的。我从来没有写过自定义二进制格式,但我相信这里有人可以指导你完成最佳实践。您可以使用 writeUTF 或 writeUTFBytes 将图层排列的字符串描述保存到ByteArray中,并且可以使用BitmapData's getPixels(),因为它返回ByteArray。
想到一个“解决方法”的想法是创建一个存档as3 zip package,其中包含您的图层为PNG / JPEG(可能使用图像as3corelib编码器)和一个xml文件描述你的文件(哪些图层应该去哪里,有什么混合/透明度/等)。这可能有点长了。
HTH, 乔治
答案 1 :(得分:0)
我为我的项目编写了几个自定义二进制格式。您可能希望首先使用有关文件的元数据为您的格式创建标题。结帐File Structure of an MP3 file。它可以让您深入了解如何组织文件。我认为你的图层将对应图中的MP3帧,因为我可以看到数据的一部分重复。
Flex为您提供了将类标记为[RemoteObject]
并以序列化形式将其写入磁盘的选项。但我发现它的尺寸太大了。我制作了一个ByteArray并分别编写了标题数据,并且使用这种方法我可以节省近200个字节。
请务必阅读有关ByteArray及其功能的文档。
关于最后一部分,我不知道任何开箱即用的解决方案将复杂数据保存到硬盘驱动器。如果您愿意,我可以为您提供更具体的信息。