Android检测触摸事件

时间:2014-04-05 14:27:31

标签: java andengine

我在Android应用程序中使用AndEngine和Box2d 我如何才能在“游戏场景”中附加一个事件,从中我可以找到按下的内容,而不是在“GameHud”中的每个按钮上放置一个事件以及如何检测按钮的保持?

public class GameScene extends Scene{
  public GameScene(){
    GameHud hud = new GameHud(this,activity);
    camera.setHUD(hud);
  }
  //catch the touch event here 
}

public class GameHud extends HUD{
  public GameHud(Scene scene, GameActivity activity){
    Sprite leftArrow = new   Sprite(75,75,leftArrowRegion,activity.getVertexBufferObjectManager())
    {
      @Override
      public boolean onAreaTouched(TouchEvent pSceneTouchEvent,
          float pTouchAreaLocalX, float pTouchAreaLocalY) {
          //...
          return true;
        }
    };
    scene.registerTouchArea(this.leftArrow);

    Sprite rightArrow = new Sprite(200, 75, rightArrowRegion, activity.getVertexBufferObjectManager())
    {
      @Override
      public boolean onAreaTouched(TouchEvent pSceneTouchEvent,
        float pTouchAreaLocalX, float pTouchAreaLocalY) {
        //...
        return true;
      }
    };
    scene.registerTouchArea(this.rightArrow);
  }
}

2 个答案:

答案 0 :(得分:0)

这篇文章“android detect触摸”是没有andengine的android项目吗?

答案 1 :(得分:0)

您可以使用以下方式侦听场景中的触摸事件:

setOnSceneTouchListener(new IOnSceneTouchListener() {

        @Override
        public boolean onSceneTouchEvent(Scene pScene, TouchEvent pSceneTouchEvent) {
            // do something with the touch event
            return true; // or false if not handled
        }

    });

但是,这样做会要求您根据触摸事件的(x,y)坐标计算单击了哪个按钮(如果有)。如果您认为这是一种更好的方法,而不是在每个按钮上注册事件,那么欢迎您这样做,但您将重做已经嵌入引擎的许多逻辑。

如果要在按钮之间共享触摸事件的逻辑,则可以让每个已注册的事件使用id或类似方法调用相同的方法来区分按钮。这将允许您集中操作逻辑,而不必为每个按下的按钮重复它。

如果这些方法都不符合您的要求,请随时对缺少的内容发表评论,并尽我所能帮助您实现目标。