我有一个精灵,旁边有一个孩子。触摸时,图像会旋转 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;
}
在上面的代码片段中,我写了理解这个概念所必需的所有基本内容。这里的矩形是场景的一个孩子。矩形包含区域触摸,具有向下、移动和向上三个事件动作。我只在 action down 事件中返回 true,因此不会调用父对象 action down 事件。
对于子对象的所有其他事件,我返回 false,因此其父对象执行剩余操作,例如移动和向上操作。
如果子对象直接返回 true 给 onAreaTouch 方法,那么父对象场景触摸方法根本不会调用。这是一个小例子,我试图通过它来解释这个概念。