要从一个图像向另一个图像复制位图数据,您可以使用以下几种方法:
clone()
、
copyPixels()
、
copyChannel()
、
draw()
和
drawWithQuality()
(
drawWithQuality
方法可在 Flash Player 11.3 和更高版本中使用;也可在 AIR 3.3 和更高版本中使用)。
正如名称的含义一样,
clone()
方法允许您将位图数据从一个 BitmapData 对象克隆或采样到另一个对象。调用此方法时,此方法返回一个新的 BitmapData 对象,它是与被复制的原始实例完全一样的克隆。
以下示例克隆橙色(父级)正方形的一个副本,并将克隆放在原始父级正方形的旁边:
import flash.display.Bitmap;
import flash.display.BitmapData;
var myParentSquareBitmap:BitmapData = new BitmapData(100, 100, false, 0x00ff3300);
var myClonedChild:BitmapData = myParentSquareBitmap.clone();
var myParentSquareContainer:Bitmap = new Bitmap(myParentSquareBitmap);
this.addChild(myParentSquareContainer);
var myClonedChildContainer:Bitmap = new Bitmap(myClonedChild);
this.addChild(myClonedChildContainer);
myClonedChildContainer.x = 110;
copyPixels()
方法是一种将像素从一个 BitmapData 对象复制到另一个 BitmapData 对象的快速且简便的方法。该方法会拍摄源图像的矩形快照(由
sourceRect
参数定义),并将其复制到另一个矩形区域(大小相等)。新“粘贴”的矩形的位置在
destPoint
参数中定义。
copyChannel()
方法从源 BitmapData 对象中采集预定义的颜色通道值(Alpha、红、绿或蓝),并将此值复制到目标 BitmapData 对象的通道中。调用此方法不会影响目标 BitmapData 对象中的其他通道。
draw()
和
drawWithQuality()
方法将源子画面、影片剪辑或其他显示对象中的图形内容绘制或呈现在新位图上。使用
matrix
、
colorTransform
、
blendMode
和目标
clipRect
参数,可以修改新位图的呈示方式。此方法使用 Flash Player 和 AIR 中的矢量渲染器生成数据。
调用
draw()
或
drawWithQuality()
时,需要将源对象(子画面、影片剪辑或其他显示对象)作为第一个参数传递,如下所示:
myBitmap.draw(movieClip);
如果源对象在最初加载后应用了变形(颜色、矩阵等等),则不能将这些变形复制到新对象。如果想要将变形复制到新位图,则需要将
transform
属性的值从原始对象复制到使用新 BitmapData 对象的 Bitmap 对象的
transform
属性中。