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

Ric*_*ven 3 apache-flex flash image actionscript-3

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

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

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

谢谢

Clo*_*lox 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))
Run Code Online (Sandbox Code Playgroud)

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