2013-07-10 12 views
5

Mam problem z przewijaniem mojej dziecięcej wersji. Stworzyłem CameraScene, który próbuję przewijać za pomocą zdarzenia dotykowego. Moja dziecięca scena nie przewija się jednak, gdy przewijam aparat podłączony do silnika scena rodzica przewija się dobrze.Przewijanie dziecięcej wersji w AndEngine

Skąd mam doprowadzić scenę swojego dziecka do przewijania bez obiektów związanych z przewijaniem scen mypiórki?

public StatsScene(Context context, VertexBufferObjectManager vbo) { 
    super(new SmoothCamera(0, 0, WITDH, HEIGHT, 0, SPEEDY, 0)); 

    this.setOnSceneTouchListener(new IOnSceneTouchListener() { 
     @Override 
     public boolean onSceneTouchEvent(Scene pScene, TouchEvent pSceneTouchEvent) { 
      if(pSceneTouchEvent.getAction() == MotionEvent.ACTION_DOWN) { 
       mTouchY = pSceneTouchEvent.getMotionEvent().getY(); 
      } 
      else if(pSceneTouchEvent.getAction() == MotionEvent.ACTION_MOVE) { 
       float newY = pSceneTouchEvent.getMotionEvent().getY(); 

       mTouchOffsetY = (newY - mTouchY); 

       float newScrollX = getCamera().getCenterX(); 
       float newScrollY = getCamera().getCenterY() - mTouchOffsetY; 

       getCamera().setCenter(newScrollX, newScrollY); 

       mTouchY = newY; 
      } 
      return true; 
     } 
    }); 
} 

Odpowiedz

0

nie jestem w AndEngine i nie jestem pewien, czy mogę uzyskać prawo problem (w kodzie ma nic o „myparents” lub „childscene”), ale gdy coś jest przymocowany do sceny , to oznacza, że ​​będzie się z nim poruszać. Możesz przewijać swoje dzieci w innym kierunku, aby utrzymać swoją pozycję, ale to może popaść w kłopoty w dłuższej perspektywie. Jeśli jest to możliwe, spróbuj oddzielić przewijaną scenę i przedmioty, co oznacza, że ​​nie powinny być od siebie nawzajem. Zamiast tego, jeśli chcesz, aby były z nimi spokrewnione, daj im wspólnego rodzica. Jeśli przesuniesz teraz jeden obiekt, rodzeństwo tego nie zrobi. Nadzieja, która pomaga.

0

Z Twojego opisu Myślę, że rodzic scena jest jedną coraz wejście więc zgaduję, proszę mnie poprawić, jeśli się mylę, że ustawiasz swoje dziecko sceny coś takiego:

mMainScene.attachChild(mChildScene); 

W tym przypadku będziesz musiał poradzić sobie z odejściem od danych wprowadzanych do dziecka zamiast do rodzica. Jednakże, masz kilka możliwości:

  1. Jeśli dziecko sceny zajmuje cały ekran i nie trzeba się martwić o aktualizację/rysunek swoją macierzystą scenę, wystarczy zamienić sceny z

    mEngine.setScene (mChildScene);

  2. Jeśli musisz nadal rysować i aktualizować scenę nadrzędną, sprawdź wstępnie przygotowaną klasę MenuScene i Scene.setChildScene(), jest jeden przykład na temat tego, jak używać tego w projekcie AndengineExamples. Użycie tej klasy pozwoli ci wziąć wejście na scenę dziecięcą, ale wciąż rysując i aktualizując główną scenę, nawet pozwala ci ustawić dziecko w sposób modalny.

Powiązane problemy