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

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

最佳答案

在这里,我将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;
}


在上面的代码片段中,我写了理解该概念所必需的所有基本内容。这里的矩形是场景的子元素。矩形包含区域触摸以及向下,向上和向上移动三个事件。我在仅下动作事件中返回true,因此不调用父对象下动作事件。

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

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

10-07 12:51