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 クラスで定義されている 3 つの定数、ALWAYSAUTO および NEVER のいずれかを受け入れます。

ピクセルの吸着を適用するシンタックスは次のとおりです。

myBitmap.pixelSnapping = PixelSnapping.ALWAYS;

ビットマップイメージが拡大/縮小されると、ぼやけたり歪んだりすることが多々あります。 この歪みを抑えるため、BitmapData クラスの smoothing プロパティを使用します。このブール型プロパティを 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 ピクセル、幅 2,880 ピクセルです。

transparent パラメーターは、ビットマップデータにアルファチャンネルが含まれるかどうかを指定します。含まれる場合は true、含まれない場合は false です。fillColor パラメーターは、背景色を指定する 32 ビットのカラー値です。true に設定されている場合は、透明度の値も指定します。次の例では、透明度が 50% に設定されたオレンジ色の背景の BitmapData オブジェクトを作成します。

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

新たに作成された BitmapData オブジェクトを画面にレンダリングするには、このオブジェクトを Bitmap インスタンスに割り当てるか、ラップします。 そのためには、Bitmap オブジェクトのコストラクタのパラメーターとして BitmapData オブジェクトを渡すか、BitmapData オブジェクトを既存の 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);