将数据存储在SWF文件中,无需解析它们

时间:2013-05-16 15:07:29

标签: actionscript-3 flash shared-objects

我正在制作一款Flash游戏,我需要一种存储大量有关世界的数据的方法,就像所有游戏中整个游戏中的数据一样。在对象层次结构中分组的大量值(整数,浮点数,字符串)。关键是要在开发过程中轻松编辑(比如普通的文本文件或XML),并且在读取数据时没有性能开销,并且在启动时的开销最小。

问题可以简化为:如何将已准备好的ActionScript对象与SWF文件中已填充的所有字段放在一起(不需要在它们上运行init函数)?

首先想到的是MXML是这样的,但我不知道如何使用它来完成工作 - 更不用说可能的开销(我读过MXML很慢)。甚至可以在不需要解析事情的情况下这样做吗?如果没有,最好的选择是什么? XML? JSON?自定义格式和解析器函数?

1 个答案:

答案 0 :(得分:0)

使您要保存的类实现 IExternalizable (并且不要忘记实际编写必要的函数;))。使用 registerClassAlias 使类可用于AMF编码。

然后将类写入ByteArray(使用ByteArray.writeObject())并压缩它。之后,将ByteArray写入文件。

读取文件时,将内容读取到ByteArray,使用decompress(),然后使用“readObject()作为YOURCLASS”来取回实例。

如果您愿意,可以省略压缩,但根据存储的数据,它会产生巨大的差异。在我目前正在处理的项目中,未压缩文件大约需要6MB,压缩版本只需要178KB。