2009-07-31 83 views
3

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

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

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

感谢

回答

5

2880像素限制是针对BitmapDatas的,对于DisplayObjects则有8191个像素的限制。 您可以通过使用BitmapDataUnlimited级可以在这里找到绕过这些限制:http://code.google.com/p/bitmapdataunlimited/

然而,如果性能是我建议你让这么大的图像由多个较小的,而不是重要的。即使您不重复使用这些较小的或者将其从displayList中移除或将它们的visible-property设置为false,仍然会有性能增益,因为flash会自动检测到它们处于舞台之外,并且不必被渲染。

编辑:

我忘了说,手工创建的BitmapData当2880px限制只适用,图像比这更大仍然可以加载,和他们的BitmapData(比2880px大)可以访问和操纵。 你可以很容易有一个位图数据位图一样大口,然后你可以做类似设置它的位图:

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

滚动时,你可以简单地做上面的每一帧 ,或者如果表现是重要的,你可以在滚动时(如果scrollingDistance小于viewportSize)使用viewportBitmapData.scroll(x,y)来移动整个bitmapData,然后只复制新的像素。

+0

莫非我_load_整个图像,手动设置滚动条,并只绘制适合视口的图像数据区域(由滚动条偏移)? – 2009-07-31 18:33:52

4

我读过的限制是每个维度2880个像素在Flash 9在Flash 10的极限更高。检查您正在编译的版本。

您可能会将图像切分为更小的部分并将其组装到Flex中。

0

如果让这FLASHPLAYER你靶向差异:

版本VS最大bitmapsize

版本的Adobe Flash -9:2880x2880像素
版本的Adobe Flash 10:4096×4096像素
版本的Adobe Flash 11:无限