需要非常大的数据结构.寻找想法

Fel*_*ope 5 flash actionscript-3 data-structures

我已经咀嚼了一段时间,我想我会提出一个问题并尝试对此有所了解.也许会引发一个灯泡.

我需要构建一个十六进制网格,并且十六进制网格将至少为10 x 10,最大为500x500 - 并且可能更大.这显然是高端的一个巨大的网格,自然必须被打破.

这是问题的主要部分.

  • 500x500网格的六边形.约.
  • 它们不会经常变化,但它们可以改变.
  • 将它分解为50x50或100x100部分是非常可行的,但有可能有人可以从地图的一端运行到另一端,所以我需要能够在某个时刻处理整个事情,即使它是在部分.
  • 这显然会造成很大的内存消耗.

我可以将数据(共享变量)存储为简单的byteArray,甚至可以存储在plainText中.每个十六进制的信息非常简单,它只是有多少.我没有"保存"数据.(将是一个功能)

每个六边形的基本结构是:

  • 十六进制颜色(显然有轮廓)(或位图图片)blitting任何人!
  • 带有数字的TextField.(最多2位数)

这几乎是所有需要的信息.

如果根本没有十六进制发生变化的可能性,这将是相当微不足道的.

所以我很好奇是否有人对此有任何想法.(任何绝对真理都不会坏;)

编辑:哦,关于hexes的信息来自tcp流.这不是问题,就像我说的那样,每个十六进制数据都是简单的,我的解析器是闪电般快速的,所以它不是问题.

更新:我不得不创建和维护250,000个对象(hexes)的可能性是我最常问的问题.这就是为什么我在寻找创意.(闪存中的250k对象很好)

alx*_*lxx 4

每个六边形的基本结构是:

* hex color (with outline obviously) (or a bitmap picture) blitting anyone!
* TextField with a number in it. (max 2 digits)
Run Code Online (Sandbox Code Playgroud)

我想您不需要存储所有 250K 文本字段和位图,因为它们只需要存在于屏幕上。将此数据打包成少量字节 - 最多 2 位数字为 7 位,添加调色板中的颜色 ID(如果需要真彩色,则添加 24 位)和位图 ID。如果你制作相同大小的结构,你可以将它们写入ByteArray。这将使您摆脱 250K 对象引用并防止可能的内存碎片。
然后,您只需为这些字节创建打包/解包函数到一些可用的对象中(不要忘记对象池),并进行算术运算以从ByteArray正确的位置获取它们。正如其他人指出的,如果将单元格数据打包到一对 int 中,250K 单元格并不算多。