[AS3] StarlingフレームワークのDisplayObject.hitTest()メソッド [Edit]

Starlingフレームワークには当たり判定のメソッドとして、DisplayObject.hitTest()が定められています。ただし、ActionScript 3.0定義済みのメソッドと細かな点に違いがあります。

01 引数

第1に、引数が異なります。第1引数は座標を示すPointオブジェクトです(第2引数については、 「Starlingフレームワークでインスタンスをクリックする」をお読みください)。

DisplayObjectオブジェクト.hitTest(Pointオブジェクト, 対象の限定)

もっとも、ActionScript 3.0定義済みのDisplayObject.hitTestObject()メソッドと同じように、DisplayObjectインスタンス同士の矩形領域(境界ボックス)の重なりを調べる方法はあります。

StarlingフレームワークのDisplayObject.getBounds()メソッドで、インスタンスの矩形領域を表すRectangleオブジェクトが得られます。そして、ふたつのインスタンスのRectangleオブジェクトの重なりは、Rectangle.intersects()メソッドで調べればよいでしょう。

02 判定の領域

座標を渡す点では、ActionScript 3.0定義済みのDisplayObject.hitTestPoint()メソッドと似ています。でも第2に、当たり判定はあくまで矩形領域で、形状を見分けることができません。

ただし、インスタンスのBitmapDataオブジェクトが得られる場合には、ActionScript 3.0定義済みのBitmapData.hitTest()メソッドを用いてビットマップイメージのアルファまで識別した重なりが調べられます。具体的なスクリプトについては、「Starling フレームワークでビットマップ上のクリックを検知する」をお読みください。

03 戻り値

第3に、メソッドから返されるのはブール値でなく、ポインタ直下のDisplayObjectインスタンスです。ただし、DisplayObjectContainerクラスでは同名のメソッドをオーバーライドして、子インスタンスを返します。詳しくは、リファレスンとして開設した「Starlingフレームワークで表示オブジェクトと座標の重なりを調べる」をご参照ください。

コメント

この記事にコメントを書く

記事に対するテクニカルな質問はご遠慮ください(利用規約)。

その他の記事