Flash位图的处理限制

读了后, 做了一下测试.的确存在这样的问题.
文档(FlashPlayer10)中指出BitmapData的高或宽不能超过8191个像素, 总像素数不能超过16777215.
这里估计也是Flash的位图处理限制.即使是在Flash CS4这样的可视化的IDE中, 同样存在这个现象:
找来一张3200×1666的图片(尽量选择大尺寸图片便于测试极限情况).
将其宽度缩小至50, 在舞台中从最左拖至最右(舞台范围尽量调大),
X轴上总会有一个位置M,当图片经过M时, 图片内容会发生变化,
出现重复图像(导入的图片被打散[Ctrl+B操作])或出现纯色以及拉丝等现象.
而且在编辑状态,这个位置M和Flash舞台(0,0)位置无关,而是与编辑区的左上顶点有关.
可以这么理解, 编辑区其实是一个实时编译的”SWF”.
这点和Flex Builder有些相似, 有时我们会发现在进入CSS的预览面板时,
能够看到熟悉的FLEX程序加载进度条.
进一步测试可以发现这个M与图像高度无关(下图中第二组图片经过外面剪切后重新导入Flash中):

但是与图像原始宽度及缩放比例有密切关系:


放大2000倍的舞台:


在Y轴上,同样存在对应着图片的”极限”位置N:

这个点怎么确定呢? 不知道. 这里通过对点位置有影响的几个属性值做了简单推算, 以宽度计算为例, 图片原始宽度ow, 当前宽度w, 假设存在某个常量C,
那么公式可能是C=M*(ow/w), 这个C大概在35000~36000, 而对于高度测试中大概在18000左右浮动.
上面文章中指出2562宽度的图片,实际宽度为50,坐标不超过640, 按C=M*(ow/w)可以算出数值为(640+50)*(2562/50) = 35355.6
当然,真正的过程不得而知,也许和内存占用,位图渲染处理有关.这种计算结果不可能是一个”范围”, 上面的推算仅供参考,博君一笑.
希望有知道原理的兄弟指点一下 :)
扩展阅读:
Flash Player Bitmap Limits
Flash Player Bitmap Limits Again
BitmapData

Leave a Reply

 

 

 

You can use these HTML tags

<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> <pre lang="" line="" escaped="">