我有一个带有附加孩子的精灵。触摸时图像旋转180度,但为了使图像保持原位我只有父调用旋转。这意味着如果孩子被触摸,它会调用其父母的旋转。触摸孩子时这很好用,但我发现如果触摸了父母,那么也会调用孩子的onAreaTouched(),然后调用父母的旋转,撤消旋转。
我在代码中找不到任何说明孩子的onAreaTouched()在父母的时候被调用的东西,但是那是怎么回事?
答案 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方法,那么父对象场景触摸方法根本不会调用。这是一个小例子,我试图解释这个概念。