在Image中显示巨大的可滚动图像?

时间:2009-07-31 00:45:27

标签: flex flash actionscript-3 image

我正在尝试显示可能比可用显示区域大的图像文件(jpg,png,gif)。我在cCanvas中嵌入了一个Image(用于滚动),但是没有完全显示大图像。

非常大的图像(例如2480 x 3507)使用滚动图像剪切图像的顶部或顶部和底部。

使用mx.controls.Image可以显示的最大图形是什么?

由于

3 个答案:

答案 0 :(得分:5)

对于BitmapDatas,2880像素限制,对于DisplayObjects,限制为8191像素。 您可以使用此处提供的BitmapDataUnlimited类来绕过这些限制:http://code.google.com/p/bitmapdataunlimited/

但是,如果性能很重要,我建议让这些大图像由多个较小的图像组成。即使你不重用这些较小的或者将它们从displayList中删除或者将它们的visible-property设置为false,仍然会有性能提升,因为flash会自动检测到它们不在舞台之外而且不必被渲染。

编辑:

我忘了说2880px-limit仅适用于手动创建BitmapDatas,仍然可以加载大于该值的图像,并且可以访问和操作它们的BitmapDatas(大于2880px)。 您可以轻松地使用与视口一样大的bitmapData的Bitmap,然后您可以通过执行以下操作来设置其bitmapData:

viewportBitmapData.copyPixels(sourceBitmapData, new Rectangle(x,y,viewportWidth, viewPortHeight), new Point(0,0))

滚动时,您可以在每个帧上执行上述操作 或者如果性能很重要,则可以在滚动时(如果scrollingDistance小于viewportSize)使用viewportBitmapData.scroll(x,y)移动整个bitmapData,然后仅复制新像素。

答案 1 :(得分:4)

我已经读过Flash 9中每个维度的限制为2880像素。在Flash 10中,限制更高。检查您要编译的版本。

您可能会将图像切成小块并将它们组装成Flex。

答案 2 :(得分:0)

如果您要定位的FlashPlayer有所不同:

版本VS最大位图

flashplayer -9:2880x2880 px
flashplayer 10:4096x4096 px
flashplayer 11:无限制