2013-07-10 7 views
5

Ich habe ein Problem beim Scrollen meiner Kinderszene. Ich habe eine CameraScene erstellt, die ich mit einem Touch-Ereignis scrollen möchte. Meine Kinderszene scrollt nicht, aber wenn ich auf der Kamera laufe, die an die Engine angeschlossen ist, scrollt die Elternszene gut.In AndEngine eine Kinderszene scrollen

Also, wie bekomme ich meine Kinderszene zum Scrollen ohne die an Myparants angehängten Objekte scrollt Szene entlang?

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; 
     } 
    }); 
} 

Antwort

0

Ich bin nicht wirklich in AndEngine und ich bin nicht sicher, ob ich das Problem richtig zu machen (im Code ist nichts über „myparents“ oder „childscene“), aber wenn etwas in der Szene angebracht ist dann impliziert das, dass es sich damit bewegen wird. Sie könnten Ihre Kinder in die andere Richtung scrollen, um ihre Position zu halten, aber das könnte Sie langfristig in Schwierigkeiten bringen. Wenn es möglich ist, versuchen Sie, Ihre scrollende Szene und Ihre Objekte zu trennen, was bedeutet, dass sie keine Kinder voneinander sein sollten. Wenn Sie möchten, dass sie in Beziehung zueinander stehen, geben Sie ihnen stattdessen einen gemeinsamen Elternteil. Wenn Sie jetzt ein Objekt verschieben, werden die Geschwister nicht. Ich hoffe, das hilft.

0

Aus Ihrer Beschreibung würde ich denken, dass Ihre Eltern Szene derjenige bekommen, Ihr den Eingang ist so vermute ich, bitte korrigieren Sie mich, wenn ich falsch bin, dass Sie Ihr Kind Szene so etwas wie dies setzen:

mMainScene.attachChild(mChildScene); 

In diesem Fall müssen Sie sich damit befassen, die Eingabe für das Kind anstelle des Elternelements zu ändern. Allerdings haben Sie ein paar Optionen hier:

  1. Wenn Ihr Kind Szene nimmt den gesamten Bildschirm und Sie brauchen sich nicht um die Aktualisierung kümmern/Ihre Eltern Szene zeichnen, einfach Szenen wechseln mit

    mEngine.setScene (mChildScene);

  2. Wenn Sie weiterhin Ihre Elternszene zeichnen und aktualisieren müssen, überprüfen Sie die vorgefertigte Klasse MenuScene und die Scene.setChildScene() -Methode. Es gibt ein Beispiel dafür, wie ich das im AndengineExamples-Projekt verwende. Wenn Sie diese Klasse verwenden, können Sie die Eingabe für die untergeordnete Szene übernehmen, aber weiterhin Ihre Hauptszene zeichnen und aktualisieren. Sie können Ihr Kind sogar modal einstellen.