複製點陣圖資料

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 屬性。