まず、BitmapData と Bitmap は互換性がありません。それらは2つの非常に異なるものです。BitmapData クラスにはビットマップ ピクセル データが含まれており、そのピクセル データを操作できます。たとえば、描画したり、特定のピクセルの色を変更したりできます。BitmapData を直接表示する方法、つまり表示リストに追加する方法はありません。
一方、Bitmap クラスは、MovieClip や Sprite と同様に、表示リストに追加できるDisplayObject です。その唯一の目的は、表示リストに BitmapData をレンダリングすることです。実際、インタラクティブでさえないため、たとえば Bitmap インスタンスでクリックを直接検出することはできません。
あなたの質問に: タイル スプライトを含むビットマップ データがあり、そのタイルを別のビットマップデータに描画する場合は、BitmapData.draw() メソッドまたは BitmapData.copyPixels() メソッドを使用できます。後者は、任意の BitmapData で使用できる最速の方法の 1 つなので、強くお勧めします。
特定のアプリケーションによっては、すべてをビットマップで描画することがまったく有益でない場合があります。すべてのタイルでクリック イベントを検出できるようにしたいように思えますが、スプライトなどの別々の DisplayObject にすることでおそらくメリットがあると思います。
必要に応じて、Sprite を拡張する Tile クラスを作成し、ビットマップ塗りつぶしを使用して BitmapData を描画できます。そうすれば、任意のプロパティを設定でき、タイル インスタンスでマウス イベントを検出することもできます。
package
{
/* ... imports ... */
public class Tile extends Sprite
{
private var _solid : Boolean;
public function Tile(bmp : BitmapData, solid : Boolean)
{
this.graphics.beginBitmapFill(bmp, null, false, true);
this.graphics.drawRect(0, 0, bmp.width, bmp.height);
_solid = solid;
}
/**
* Sample custom property. Could be used to define whether a tile
* is solid, e.g. the player cannot pass it.
*/
public function get isSolid() : Boolean
{
return _solid;
}
}
}
このクラスは、ゲーム内のタイルごとに単純にインスタンス化して、タイルに描画する必要があるビットマップ データを渡すことができます。このようなタイル インスタンスでイベントをリッスンすることもできます。
var tile : Tile;
tile = new Tile(myBitmapData, false);
tile.x = 200;
tile.y = 200;
tile.addEventListener(MouseEvent.CLICK, handleTileClick);
addChild(tile);
この方法では、Bitmap クラスを使用してタイルをレンダリングする必要はまったくありません。表示リストに直接追加できます。