ビットマップデータのコピー

Flash Player 9 以降、Adobe AIR 1.0 以降

イメージ間でビットマップデータをコピーするには、clone()copyPixels()copyChannel()draw() および drawWithQuality() の各メソッドを使用できます(drawWithQuality メソッドは Flash Player 11.3 以降および AIR 3.3 以降で使用可能)。

その名のとおり、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 オブジェクト間でピクセルをすばやく、かつ簡単にコピーできます。このメソッドは、sourceRect パラメーターで定義された、元のイメージの矩形のスナップショットを取得し、同一サイズの別の矩形領域にコピーします。新たに「ペーストされた」矩形の場所は、destPoint パラメーター内で指定されます。

copyChannel() メソッドは、ソース BitmapData オブジェクトから定義済みのカラーチャンネル値(アルファ、赤、緑または青)をサンプリングし、それをターゲット BitmapData オブジェクトのチャンネルにコピーします。このメソッドを呼び出しても、ターゲット BitmapData オブジェクトの他のチャンネルには影響しません。

draw() メソッドと drawWithQuality() メソッドは、元のスプライト、ムービークリップまたはその他の表示オブジェクトのグラフィックコンテンツを、新しいビットマップに描画(レンダリング)します。matrixcolorTransformblendMode およびターゲット clipRect パラメーターを使用すると、新しいビットマップのレンダリング方法を変更することができます。このメソッドでは、Flash Player および AIR でベクターレンダラーを使用してデータを生成します。

draw() または drawWithQuality() を呼び出すと、次のように、スプライト、ムービークリップまたはその他の表示オブジェクトといったソースオブジェクトを最初のパラメーターとして渡します。

myBitmap.draw(movieClip);

ソースオブジェクトが最初にロードされてから、色やマトリックスなどが変換されている場合は、変換内容は新しいオブジェクトにコピーされません。 新しいビットマップに変換内容をコピーするには、元のオブジェクトの transform プロパティの値を、新しい BitmapData オブジェクトを使用する Bitmap オブジェクトの transform プロパティにコピーする必要があります。