父母的onAreaTouched是否会触发孩子?

时间:2013-05-06 22:12:22

标签: java android andengine

我有一个带有附加孩子的精灵。触摸时图像旋转180度,但为了使图像保持原位我只有父调用旋转。这意味着如果孩子被触摸,它会调用其父母的旋转。触摸孩子时这很好用,但我发现如果触摸了父母,那么也会调用孩子的onAreaTouched(),然后调用父母的旋转,撤消旋转。

我在代码中找不到任何说明孩子的onAreaTouched()在父母的时候被调用的东西,但是那是怎么回事?

1 个答案:

答案 0 :(得分:3)

这里我将Scene视为父对象,将Rectangle视为子对象。

Scene mScene = new Scene();
mScene.setOnSceneTouchListener(this);

Rectangle rectangle = new Rectangle(x,y,width,height){
     public boolean onAreaTouch(){
          if(pSceneTouchEvent.isActionDown()){
               return true;
          }
          return false;
     }
};

mScene.registerTouchArea(rectangle);
mScene.attachChile(rectangle);

public boolean onSceneTouchEvent(){
      if(pSceneTouchEvent.isActionDown()){
           return true;
      } else if(pSceneTouchEvent.isActionUp()){
           return true;
      }
      return false;
}

在上面的代码片段中,我写了理解这个概念所需的所有基本内容。这里矩形是场景的孩子。矩形包含区域触摸,三个事件动作向下,向上和向上。我仅在action down事件中返回true,因此不调用parent object action down事件。

对于子对象的所有其他事件,我返回false,因此其父对象执行剩余的动作,例如移动和向上动作。

如果子对象直接返回onAreaTouch方法,那么父对象场景触摸方法根本不会调用。这是一个小例子,我试图解释这个概念。