読者です 読者をやめる 読者になる 読者になる
無料で使えるシステムトレードフレームワーク「Jiji」 をリリースしました!

・OANDA Trade APIを利用した、オープンソースのシステムトレードフレームワークです。
・自分だけの取引アルゴリズムで、誰でも、いますぐ、かんたんに、自動取引を開始できます。

スプライトのあたり判定で使う領域を指定する

Flex

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;
      });      
    }
  }
}

コンパイルしたものはこちら。表示されている四角以外の領域でもマウスイベントが発生しています。