複製點陣圖資料

Flash Player 9 以及更新的版本,Adobe AIR 1.0 以及更新的版本

若要將一個影像中的點陣圖資料複製到另一個影像中,您可以使用數種方法: clone() copyPixels() copyChannel() draw() drawWithQuality() ( drawWithQuality 方法可以在 Flash Player 11.3 及更新版本,以及 AIR 3.3 及更新版本中取得)。

如其名稱所建議, clone() 方法可讓您將點陣圖資料從某個 BitmapData 物件複製或取樣到另一個 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() 方法會從來源 Sprite、影片片段或其他顯示物件,將圖像內容繪製或顯示到新點陣圖。使用 matrix colorTransform blendMode 以及目標 clipRect 參數,您就可以修改顯示新點陣圖的方式。此方法會使用 Flash Player 或 AIR 中的向量描繪器來產生資料。

當您呼叫 draw() drawWithQuality() 時,可以將來源物件 (Sprite、影片片段或其他顯示物件) 當做第一個參數傳遞,如以下所示:

myBitmap.draw(movieClip);

如果來源物件在起初載入之後套用了任何變形 (顏色、矩陣等等),並不會將這些變形複製到新物件。如果您要將變形複製到新點陣圖,則需要將 transform 屬性的值從原始物件複製到使用新 BitmapData 物件的 Bitmap 物件之 transform 屬性。