为什么我不能在OS X Lion x64上的Flash Player 11中拥有120,000x120,000 px BitmapData?

Ale*_*kov 2 int actionscript-3 bitmapdata flash-player-11

Doc说:

从AIR 3和Flash播放器11开始,已删除BitmapData对象的大小限制.现在,位图的最大大小取决于操作系统.

但是,为什么我不能拥有120,000 x 120,000 px BitmapData对象?我在OS X Lion上使用64位内核.

现在120,000 ^ 2将给我需要占用的14,400,000,000个像素,这只需要34位来存储该int.但显然我可以有64位整数,不是吗?我错过了什么吗?它的意思是"依赖于操作系统"?怎么样?

wel*_*rat 8

从什么时候BitmapData像素相当于一位?请记住,您正在处理颜色信息,因此每个像素至少占用一个uint(=>大小:32位或4个字节).

那么,这意味着你的内存消耗实际上是

120000^2 * 4 => 57,600,000,000 Bytes => ap. 53,6 GB
Run Code Online (Sandbox Code Playgroud)

还要注意的是,虽然Number是一个64位的数据类型,intuint不是.

您可能需要考虑使用不同的方法来组织数据.
如果您正在处理大图,则必须将其拆分为合理大小的部分.限制可能已被解除,但我建议你克制自己最大限度.舞台大小的4倍(足够小,合理平滑滚动,足够大,所以你不必一直在舞台上放置物体).

如果它不是您想要存储的实际像素信息,也许ByteArray可能是一种可能的选择.