2013-05-06 4 views
1

У меня есть спрайт с прикрепленным ребенком рядом с ним. При касании изображение поворачивается на 180 градусов, но чтобы сохранить изображение на месте, у меня только поворот родительского вызова. Это означает, что если ребенок тронут, он вызывает поворот родителя. Это прекрасно работает, когда ребенок тронут, но я обнаружил, что если родительский коснулся, то также вызывается дочерний onAreaTouched(), который затем вызывает поворот родителя, который отменяет поворот.Содержит ли родительский контроль над своим ребенком?

Я не могу найти в коде ничего, что говорит о том, что дочерний onAreaTouched() вызывается, когда родительский, но это то, что происходит?

+0

TouchArea - это простой список, поддерживаемый сценой, вообще нет отношений между родителем и ребенком. Ваша проблема может быть связана с тем, что ваши сенсорные области перекрываются (если они перекрываются, какой из них находится напротив другого) и/или то, что является возвращаемым значением в вашем hanlder (s) событий сенсорной области? –

+0

Области не перекрываются. Однако, как бы возвращающая ценность повлияла на вещи? –

+0

Если дочерний объект возвращает false, тогда и только метод родительских объектов вызывается иначе, иначе выполняется только метод касания дочернего объекта. – Siddharth

ответ

3

Здесь я рассматриваю сцену как родительский объект и 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, поэтому его родительский объект выполняет оставшиеся действия, такие как действие перемещения и вверх.

Если дочерний объект возвращается непосредственно к методу onAreaTouch, то метод касания объекта объекта объекта объекта вообще не вызывает. Это был небольшой пример, по которому я попытался объяснить эту концепцию.

+0

Woww .... + 1 для Nice описание ... –

Смежные вопросы