スプライトにタッチエリアをつける方法

2013年8月11日日曜日

andEngine メモ

t f B! P L
スプライトをタップしてなにか処理をさせたい時の方法

方法①
シーンにIOnSceneTouchListenerをimplementsして
・onSceneTouchEventでタッチ座標取得
・タッチ座標がスプライトの上かどうか判定
・処理を行う

あんまりよくない方法(最初はこれ使ってた)
IOnSceneTouchListenerで行うのは、画面のフリップとかそういうのを判定させる場所にするべきだと思う



方法②
シーンにIOnAreaTouchListenerをimplemantsして
・onAreaTouchedでタッチしたスプライト情報を取得
・スプライトの種類やタグから判定
・処理を行う

一般的な方法



方法③
スプライト生成時にスプライトの中のonAreaTouchedをオーバーライドする
かっこいい方法。
↓AngEngine本のUtilとかを使う場合はこんな感じに書けばいい
  final AnimatedSprite ap = new AnimatedSprite(pX, pY, (ITiledTextureRegion) getBaseActivity().getResourceUtil().getAnimatedSprite("image.png",6,4).getTiledTextureRegion(), this.getBaseActivity().getVertexBufferObjectManager()){
   @Override
   public boolean onAreaTouched(final TouchEvent pSceneTouchEvent, final float pTouchAreaLocalX, final float pTouchAreaLocalY) {
    Log.d("ae", "ここにタッチした時の処理を書く");
    return true;
   }
  };
  attachChild(ap);
  registerTouchArea(ap);

Translate

このブログを検索

  • ()
  • ()
もっと見る

QooQ