1

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

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

4

1 回答 1

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,因此不会调用父对象 action down 事件。

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

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

于 2013-05-10T19:37:29.220 回答