2013-03-11 7 views
5

Mam duszkiem zapętlającym animację, jak bezczynną animację. Chcę dodać do niego kolejną animację, więc oboje grają w tym samym czasie. (Na przykład, jeśli moja pierwsza tween przesuwa ją w górę, a moja druga tween przesuwa ją w prawo, chcę, aby przesunęła się w górę i w prawo.)Adnotacje dodatkowe z Universal Tween Engine w libgdx?

Ale za każdym razem, gdy gram drugą animację, wydaje się, że całkowicie przesłoniła pierwszą . Co robię źle?

Oto mój kod:

Tween.to(sprTurtle, SpriteAccessor.POS_XY, 0.4f) 
    .waypoint(posTurtle[0] + (20 * density), posTurtle[1] + (20 * density)) 
    .target(posTurtle[0] + (30 * density), posTurtle[1]) 
    .ease(Quad.INOUT) 
    .path(TweenPaths.catmullRom) 
    .repeatYoyo(Tween.INFINITY, 0) 
    .delay(0.1f) 
    .start(tweenManager); 
Tween.to(sprTurtle, SpriteAccessor.POS_XY, 1f) 
    .target(50, 50) 
    .repeat(Tween.INFINITY, 0) 
    .start(tweenManager); 
+0

http://code.google.com/p/libgdx-tween-studio/ Może warto zajrzeć. Jest to wizualny edytor do tworzenia animacji animacji w libgdx. Nie używałem go osobiście, ale wyglądało obiecująco. – MCeley

Odpowiedz

4

Ten kod będzie zrobić zdjęcie w cont2 który jest ViewContainer przenieść pierwszy od (0,100), a następnie do (100, 100) w sekwencji.

 Timeline.createSequence() 
     .push(Tween.set(cont2, ViewContainerAccessor.POSITION_XY)) 
     .push(Tween.to(cont2, ViewContainerAccessor.POSITION_XY, 0.5f).target(0,100)) 
     .push(Tween.to(cont2, ViewContainerAccessor.POSITION_XY, 0.5f).target(100,100)) 
     .start(tweenManager); 

W moim kodzie, obraz najpierw idzie w dół, a następnie idzie w prawo.

Być może powinno być tak w kodzie

Timeline.createSequence() 
    .push(Tween.to(sprTurtle, SpriteAccessor.POS_XY, 0.4f) 
     .waypoint(posTurtle[0] + (20 * density), posTurtle[1] + (20 * density)) 
     .target(posTurtle[0] + (30 * density), posTurtle[1]) 
     .ease(Quad.INOUT) 
     .path(TweenPaths.catmullRom) 
     .repeatYoyo(Tween.INFINITY, 0) 
     .delay(0.1f)) 
    .push(Tween.to(sprTurtle, SpriteAccessor.POS_XY, 1f) 
     .target(50, 50) 
     .repeat(Tween.INFINITY, 0)) 
    .start(tweenManager); 

Jeśli rzeczywiście chcą przenieść dwa obrazy jednocześnie, będziesz musiał dokonać dwóch ViewContainers aby mogli poruszać się w tym samym czasie.

W modelu MainActivity.java z official demo apk można zobaczyć następujący kod. Dodaję LinearLayout genueHamster2 i VieewContainer cont2, aby przenieść dwa obrazy w tym samym czasie.

private LinearLayout genueHamster; 
    private LinearLayout genueHamster2; // I add another LinearLayout so we could have 
             // two images at the same time. 

    @Override public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 

    //Setup it 
    // a linearlayout in activity_main.xml 
    genueHamster = (LinearLayout) findViewById(R.id.main_cont); 
    // add for second image   
    genueHamster2 = (LinearLayout) findViewById(R.id.main_cont_2); 
    setTweenEngine(); 
    } 

    public void startAnimation(View v) { 

    // Create object which we will animate 
    ViewContainer cont = new ViewContainer(); 
    // Add a new container for the second image. 
    ViewContainer cont2 = new ViewContainer(); 
    // pass our real container 
    cont.view = genueHamster; 
    // put it into the second container 
    cont2.view = genueHamster2; 

    // /start animations 

    // Now you can have two images moving at the same time. 
    Tween.to(cont, ViewContainerAccessor.POSITION_XY, 0.5f) 
      .target(500, 0).ease(Bounce.OUT).delay(1.0f) 
      .start(tweenManager);    

    Tween.to(cont2, ViewContainerAccessor.POSITION_XY, 0.5f) 
      .target(0, 500) 
      .ease(Bounce.OUT) 
      .delay(1.0f) 
      .repeatYoyo(2, 0.5f) 
      .start(tweenManager); 

    } 
+0

Pytający szuka sposobu na wykonanie obu klatek pośrednich w tym samym czasie, a nie w sekwencji. Zastanów się, czy nie wprowadzić w tym samym czasie swoich klatek pośrednich lub przynajmniej wyjaśnij, dlaczego nie jest to możliwe, jeśli uważasz, że nie jest to możliwe. – MCeley