ピクセルレベルの衝突検出

BitmapData.hitTest() メソッドは、ビットマップデータと別のオブジェクトまたはポイント間でピクセルレベルの衝突を検出します。

BitmapData.hitTest() メソッドは、次の 5 つのパラメータを受け入れます。

不透明なイメージで衝突を検出する場合、ActionScript はイメージを完全に不透明な矩形または境界ボックスとして扱います。または、透明なイメージでピクセルレベルのヒットテストを実行する場合は、両方のイメージが透明である必要があります。これに加え、ActionScript ではアルファしきい値パラメータを使用し、ピクセルがどの段階で透明から不透明に変わるかを決定します。

次の例では、3 つのビットマップイメージを作成し、false を返す衝突ポイントと true を返す衝突ポイントを使用してピクセル衝突を確認します。

import flash.display.Bitmap;
import flash.display.BitmapData;
import flash.geom.Point;

var bmd1:BitmapData = new BitmapData(100, 100, false, 0x000000FF);
var bmd2:BitmapData = new BitmapData(20, 20, false, 0x00FF3300);

var bm1:Bitmap = new Bitmap(bmd1);
this.addChild(bm1);

// Create a red square.
var redSquare1:Bitmap = new Bitmap(bmd2);
this.addChild(redSquare1);
redSquare1.x = 0;

// Create a second red square.
var redSquare2:Bitmap = new Bitmap(bmd2);
this.addChild(redSquare2);
redSquare2.x = 150;
redSquare2.y = 150;

// Define the point at the top-left corner of the bitmap.
var pt1:Point = new Point(0, 0);
// Define the point at the center of redSquare1.
var pt2:Point = new Point(20, 20);
// Define the point at the center of redSquare2.
var pt3:Point = new Point(160, 160);

trace(bmd1.hitTest(pt1, 0xFF, pt2)); // true
trace(bmd1.hitTest(pt1, 0xFF, pt3)); // false

 

このページに新しいコメントが追加された場合に、電子メールでの通知を希望する。 | コメントレポート

現在のページ: http://livedocs.adobe.com/flash/9.0_jp/main/00000246.html