我旁边有一个精灵,上面有一个依附的孩子。触摸时,图像旋转了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方法,则父对象场景触摸方法根本不会调用。这是一个小例子,我试图通过它解释这个概念。