【问题标题】:Store data in SWF file without need to parse them将数据存储在 SWF 文件中,无需解析它们
【发布时间】:2013-05-16 15:07:28
【问题描述】:

我正在制作一个 Flash 游戏,我需要一种方法来存储有关世界的大量数据,例如在整个游戏中、所有游戏之间保持不变的数据。许多值(整数、浮点数、字符串),按对象层次结构分组。关键是在开发过程中易于编辑(如普通文本文件或 XML),读取数据时性能开销为零,启动时开销最小。

问题可以简化为:如何将所有字段都填写在 SWF 文件中的即用型 ActionScript 对象放入(无需对其运行 init 函数)?

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

【问题讨论】:

  • MXML 不是用来存储数据的,它是关于实例化图形组件的。为什么不创建一个包含常量的类并编辑这个类?
  • 你可以在空中做吗?
  • 您可以创建自定义类并将其保存到共享对象(或文本文件,如果使用 AIR)。这很容易做到。
  • 查看我对这个问题的回答:stackoverflow.com/questions/15667848/…

标签: actionscript-3 flash shared-objects


【解决方案1】:

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

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

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

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

【讨论】:

  • 看起来很简单。明天将检查这种方法。谢谢。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-09-23
  • 2015-04-22
  • 1970-01-01
  • 2012-09-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多