Аддитивные подростки с Universal Tween Engine в libgdx?

У меня есть sprite looping tween, как бездельная анимация. Я хочу добавить к нему еще одну анимацию, поэтому они оба играют одновременно. (Например, если моя первая анимация движется вверх, а моя вторая анимация движется вправо, я хочу, чтобы она двигалась вверх и вправо.)

Но всякий раз, когда я играю в свою вторую анимацию, она, кажется, полностью отменяет первый. Что я делаю не так?

Вот мой код:

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

Этот код будет делать изображение в cont2, которое является ViewContainer для перемещения сначала с (0,100), затем в (100, 100) в последовательности.

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

В моем коде изображение сначала опускается, затем идет вправо.

Возможно, в вашем коде должно быть так

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

Если вы действительно хотите, чтобы два изображения перемещались одновременно, вам нужно будет создать два ViewContainers, чтобы они могли перемещаться одновременно.

В MainActivity.java официального демо apk вы можете увидеть следующий код. Я добавляю LinearLayout genueHamster2 и VieewContainer cont2 для перемещения двух изображений одновременно.

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

То, что вы ищете, это метод Timeline.createParallel .