スプライトのあたり判定で使う領域を指定する
Sprite#hitAreaで、スプライトのあたり判定で使う領域を指定できます。
- 領域は別のスプライトで指定します。
- hitAreaとしたスプライトは非表示でもOK
package { import flash.display.*; import flash.events.MouseEvent; import flash.text.*; // 別のスプライトで当たり判定をするサンプル public class Sample extends Sprite { public function Sample(){ // スプライト var rect:Sprite = new Sprite(); addChild(rect); var g:Graphics = rect.graphics; g.beginFill( 0xFF4444 ); g.drawRect( 50, 50, 50, 50 ); g.endFill(); // hitAreaとして設定するスプライト var hitArea:Sprite = new Sprite(); addChild(hitArea); g = hitArea.graphics; g.beginFill( 0xFF4444 ); g.drawCircle( 60, 60, 50 ); // ヒットエリアは円 g.endFill(); hitArea.visible = false; // スプライトのhitAreaを設定→当たり判定の領域がhitAreaで指定したスプライトになる。 rect.hitArea = hitArea; // 確認のためスプライトにイベントハンドラを設定 var text:TextField = new TextField(); text.x = 10; text.y = 10; text.width = 200; text.height = 20; text.text = "mouse over!!"; text.visible = false; addChild(text); rect.addEventListener(MouseEvent.MOUSE_OVER, function(ev:flash.events.MouseEvent):void { text.visible = true; }); rect.addEventListener(MouseEvent.MOUSE_OUT, function(ev:flash.events.MouseEvent):void { text.visible = false; }); } } }
コンパイルしたものはこちら。表示されている四角以外の領域でもマウスイベントが発生しています。