将多个位图绘制到不同位置的单个Sprite上

时间:2011-02-08 23:46:27

标签: flash flex actionscript-3

我有许多基本图像需要组合才能构建更大的图像以在Sprite个对象上绘制。我知道beginBitmapFill()类的Graphics方法在Sprite的图形对象上呈现位图。所以我认为我需要操纵BitmapData对象,添加基础图像以生成合成图像,然后我可以在Sprite上绘制。

我的问题是:有没有干净且相对轻松的方法呢?有没有办法将位图绘制到Sprites图形上下文中的某些位置?你能否在某个坐标处将Graphics对象复制到另一个对象上并以这种方式构建它?

1 个答案:

答案 0 :(得分:2)

您打算构建的这些大图像有多大? Flash 10仅限于创建8191x8191px的位图(Flash 9限制为2880x2880px)。您可以在docs

中详细了解相关信息

假设您对大图像的尺寸没问题,我建议您采用您提到的第一种方法:将较小位图中的像素数据复制到一个较大的位图中,然后将其绘制到Sprite的Graphics对象中。

我会首先创建一个大尺寸的新BitmapData对象,然后循环遍历每个较小的图像,然后使用BitmapData.copyPixels()将每个小位图的像素复制到大图像中。构建大图像后,您可以使用Graphics.beginBitmapFill()和Graphics.drawRect()将大型BitmapData绘制到Sprite中。

走这条路的原因是BitmapData.copyPixels()会比Graphics.beginBitmapFill()和Graphics.drawRect()更快。它也更清晰,因为你必须为每个新的位图做beginBitmapFill(),如果你这样做的话。