Flash 需要非常大的数据结构。寻找想法
我已经思考了一段时间了,我想我会提出一个问题,并尝试获得一些关于它的想法。也许有什么东西会点燃一个灯泡 我需要建立一个六边形网格,该六边形网格将是一个最小10 x 10,最大500x500-可能更大。这显然是一个巨大的网格在顶端,自然会被打破 这里是问题的主要部分Flash 需要非常大的数据结构。寻找想法,flash,actionscript-3,data-structures,Flash,Actionscript 3,Data Structures,我已经思考了一段时间了,我想我会提出一个问题,并尝试获得一些关于它的想法。也许有什么东西会点燃一个灯泡 我需要建立一个六边形网格,该六边形网格将是一个最小10 x 10,最大500x500-可能更大。这显然是一个巨大的网格在顶端,自然会被打破 这里是问题的主要部分 500x500六边形网格。大约 它们不会经常改变,但它们可以改变 将其分解为50x50或100x100部分是非常可行的,但是有人可能会从地图的一端跑到另一端,因此我需要能够在某个时候处理整个事情,即使是在部分中 这显然会造成很大的内
- 500x500六边形网格。大约
- 它们不会经常改变,但它们可以改变
- 将其分解为50x50或100x100部分是非常可行的,但是有人可能会从地图的一端跑到另一端,因此我需要能够在某个时候处理整个事情,即使是在部分中
- 这显然会造成很大的内存消耗
* hex color (with outline obviously) (or a bitmap picture) blitting anyone!
* TextField with a number in it. (max 2 digits)
- 六边形颜色(带明显轮廓) (或位图图片)点播 任何人李>
- 文本字段,其中包含一个数字。(最多2 数字)
更新:有可能创建和维护250000个对象(hexes),这是我一直在问的问题。这就是我寻找创意的原因。(闪存中的250k对象是很好的laf)也许您可以将此作为重复数据消除的练习?例如,与十六进制关联的不同文本值不超过100个。假设您只使用了少量不同的十六进制颜色(比如说,少于20),那么一组相对较小的十六进制实例就可以代表所有可能的十六进制配置。因此,您可以使用以下实用程序函数(抱歉,ActionScript语法无效):
Hex-getHex(整数颜色,字符串标签)
…检查给定配置中是否已经存在十六进制,如果还不存在,则只创建一个新的hex
实例
因此,数组中仍有250000个引用(或用于跟踪hexes的任何结构),但实际对象实例的数量要少得多。看起来这应该是可以管理的,即使是在Flash中
当然,如果您的十六进制在创建后是可变的,您必须非常小心
每个六边形的基本结构是:
* hex color (with outline obviously) (or a bitmap picture) blitting anyone!
* TextField with a number in it. (max 2 digits)
我想您不需要存储所有的250K文本字段和位图,因为它们只需要存在于屏幕上。将此数据打包为少量字节-最多2位为7位,从调色板中添加颜色id(如果需要truecolor,则添加24位)和位图id。如果您制作相同大小的结构,则可以将它们写入ByteArray。这将使您摆脱250K对象引用,并防止可能的内存碎片。然后,您只需要将这些字节的函数打包/解包到一些可用的对象中(不要忘记对象池),并通过算术从
ByteArray
中获取它们。正如其他人所指出的,如果将单元格数据打包成一对int,那么250K单元格就不算多。从您的描述中还不清楚问题出在哪里。一个相当小的数据结构的500x500数组在内存中不会很大。如果你只需要存储一个RGB颜色和一个int,它可能只有几兆字节。到底是什么问题?250000个可能的对象就是我问的原因。仅针对地图。250000个对象只有在对象很大的情况下才是问题。但是您指定数据结构有一个颜色(4字节)和一个int(4字节)。这是一个很小的数据量(~2MB)。您需要同时显示这些六边形中的多少个?大概不是所有的250000人都在同一时间。。。