代码之家  ›  专栏  ›  技术社区  ›  Richard Haven

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

  •  3
  • Richard Haven  · 技术社区  · 15 年前

    我试图显示的图像文件(JPG、PNG、GIF)可以大于可用的显示区域。我已经在CCANVAS中嵌入了一个图像(以进行滚动),但是大图像并没有完全显示出来。

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

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

    谢谢

    3 回复  |  直到 13 年前
        1
  •  5
  •   Clox    15 年前

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

    但是,如果性能很重要,我建议让如此大的图像由多个较小的图像组成。即使您不重新使用这些较小的,或注意从显示列表中删除它们,或将它们的可见属性设置为假,仍然会有性能提高,因为Flash会自动检测到它们在后台之外,不必渲染。

    编辑:

    我忘了说2880px限制仅适用于手动创建位图数据时,大于该限制的图像仍可以加载,并且可以访问和操作其位图数据(大于2880px)。 您可以很容易地得到一个位图,其中位图数据的大小与视区相同,然后您可以通过执行以下操作来设置其位图数据:

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

    滚动时,只需在每一帧上进行上述操作。 或者,如果性能很重要,则可以在滚动时(如果滚动距离小于viewportsize),使用viewportbitmapdata.scroll(x,y)移动整个位图数据,然后仅复制新像素。

        2
  •  4
  •   ajh1138    15 年前

    我已经读到在flash 9中,每个维度的限制是2880像素。在flash 10中,限制更高。查看您正在编译的版本。

    您可能会将图像分割成更小的部分,并将它们灵活地组装起来。

        3
  •  0
  •   Mark Knol    13 年前

    如果你瞄准的Flashplayer有所不同:

    版本与最大位图大小

    FlashPlayer-9:2880x2880像素
    Flashplayer 10:4096x4096像素
    FlashPlayer 11:无限