Bitmap 與 BitmapData 類別

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

搭配點陣圖影像使用的主要 ActionScript 3.0 類別,包括用來在螢幕上顯示點陣圖影像的 Bitmap 類別,以及用來存取和操作點陣圖原始影像資料的 BitmapData 類別。

瞭解 Bitmap 類別

做為 DisplayObject 類別的子類別,Bitmap 類別是用來顯示點陣圖影像的主要 ActionScript 3.0 類別。這些影像可能已經透過 flash.display.Loader 類別載入,或使用 Bitmap() 建構函式以動態方式建立。從外部來源載入影像時,Bitmap 物件只能使用 GIF、JPEG 或 PNG 格式的影像。一旦經過初始化,就可將 Bitmap 實體視為必須在「舞台」上顯示之 BitmapData 物件的包裝函式。因為 Bitmap 實體是一個顯示物件,所以顯示物件的所有特色與功能也可用來操作 Bitmap 實體。如需有關使用顯示物件的詳細資訊,請參閱 顯示程式設計

像素貼齊與平滑化功能

除了所有顯示物件共用的功能之外,Bitmap 類別還會提供點陣圖影像特有的一些其它功能。

Bitmap 類別中的 pixelSnapping 屬性可決定 Bitmap 物件是否會貼齊其最近的像素。這個屬性會採用在 PixelSnapping 類別中定義的下列三個常數之一: ALWAYS , AUTO NEVER

套用像素貼齊的語法如下:

myBitmap.pixelSnapping = PixelSnapping.ALWAYS;

通常在縮放點陣圖影像時,會造成模糊且扭曲的影像。為了減少此扭曲的情形,請使用 BitmapData 類別的 smoothing 屬性。將此 Boolean 屬性設定為 true 時,只要縮放影像,就會對影像中的像素進行平滑化 (或消除鋸齒)。這可以讓影像呈現更清晰而且更自然的外觀。

瞭解 BitmapData 類別

BitmapData 類別 (在 flash.display 套件中) 可以比喻為包含在已載入或動態建立的點陣圖影像中,像素的相片快照。此快照是由物件中的像素資料陣列所呈現。BitmapData 類別也包含一系列的內建方法,這些方法對於建立和操作像素資料非常有用。

若要初始化 BitmapData 物件,請使用下列程式碼:

var myBitmap:BitmapData = new BitmapData(width:Number, height:Number, transparent:Boolean, fillColor:uinit);

width height 參數會指定點陣圖的大小。從 AIR 3 和 Flash Player 11 開始,已移除 BitmapData 物件的大小限制。點陣圖的大小上限取決於作業系統。

在 AIR 1.5 和 Flash Player 10 中,BitmapData 物件的大小上限為 8,191 像素寬度或高度,且像素總計不得超過 16,777,215 像素 (因此,如果 BitmapData 物件的寬度為 8,191 像素,則其高度上限為 2,048 像素)。若為 Flash Player 9 和 AIR 1.1 及其更早版本,高度和寬度的上限都是 2,880 像素。

transparent 參數會指定點陣圖資料是 ( true ) 否 ( false ) 包括 Alpha 色版。 fillColor 參數是 32 位元顏色值,它會指定背景顏色及透明度值 (如果已經設定為 true )。下列範例會建立 BitmapData 物件,並設定具有 50% 透明度的橘色背景:

var myBitmap:BitmapData = new BitmapData(150, 150, true, 0x80FF3300);

若要在螢幕上顯示新建立的 BitmapData 物件,請將它指定給 Bitmap 實體,或將它包裝在 Bitmap 實體中。若要這麼做,您可以將 BitmapData 物件當做 Bitmap 物件之建構函式的參數來傳遞,或是可以將它指定給現有之 Bitmap 實體的 bitmapData 屬性。您也必須呼叫容納 Bitmap 實體之顯示物件容器的 addChild() addChildAt() 方法,將 Bitmap 實體加入顯示清單。如需有關使用顯示清單的詳細資訊,請參閱 將顯示物件加入顯示清單

下列範例會建立 BitmapData 物件並以紅色做為填色,再將它顯示在 Bitmap 實體中:

var myBitmapDataObject:BitmapData = new BitmapData(150, 150, false, 0xFF0000); 
var myImage:Bitmap = new Bitmap(myBitmapDataObject); 
addChild(myImage);