复制位图数据

Flash Player 9 和更高版本,Adobe AIR 1.0 和更高版本

若要从一个图像向另一个图像中复制位图数据,可以使用多种方法:clone()copyPixels()copyChannel()draw()

正如名称的含义一样,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() 方法将源 sprite、影片剪辑或其他显示对象中的图形内容绘制或呈示在新位图上。使用 matrixcolorTransformblendMode 和目标 clipRect 参数,可以修改新位图的呈示方式。此方法使用 Flash Player 和 AIR 中的矢量渲染器生成数据。

调用 draw() 时,需要将源对象(sprite、影片剪辑或其他显示对象)作为第一个参数传递,如下所示:

myBitmap.draw(movieClip);

如果源对象在最初加载后应用了变形(颜色、矩阵等等),则不能将这些变形复制到新对象。如果想要将变形复制到新位图,则需要将 transform 属性的值从原始对象复制到使用新 BitmapData 对象的 Bitmap 对象的 transform 属性中。