2017-09-13 8 views
0

私はActors(Labels、precize)とActionsを使って簡単なアニメーションを作成しています。 私の最初の計画は、それらのうちの1つを瞬時に左に移動させ、それを画面の端からスムーズに見せ、別のものを置き換えることでした。しかし、新しいアクションが実行されるたびに、ラベルの位置がリセットされるため、私は計画した効果を得ることができません。どうすればそれを避けることができますか?別のアクションを追加した後のLibgdxアクタの位置がリセットされます

newAttack.addAction(Actions.moveBy(-1 * game.W, 0)); 
    newAttack.setText(game.local.get(_attack)); 
    newAttackType.background = game.skin.getDrawable("attack_" + getAttackType(_attack)); 
    lastAttack.addAction(Actions.sequence(Actions.moveBy(game.W, 0, 1.5f), 
      Actions.run(new Runnable() { 
      public void run() { 
       System.out.println(lastAttack.getX() + " " + lastAttack.getY()); 
       newAttack.addAction(Actions.sequence(Actions.moveBy(game.W, 0, 1.5f), Actions.run(new Runnable() { 
       public void run() { 
         lastAttack.addAction(Actions.moveBy(-1 * game.W, 0)); 
         newAttack.addAction(Actions.moveBy(-1 * game.W, 0)); 
         System.out.println(lastAttack.getX() + " " + lastAttack.getY() + "\n" + "--"); 
         lastAttack.setText(game.local.get(_attack)); 
         lastAttackType.background = game.skin.getDrawable("attack_" + getAttackType(_attack)); 
        } 
      }))); 
     } 
    }))); 

答えて

1

これは動作しないかもしれませんが、Label.setText()のソースコードを覗くことは方法がActor.invalidateHierarchyを呼び出すことが明らかになった:あなたがそれを必要とする場合 はここで、コードです。これは、lastAttack俳優を含むものがlastAttackの位置をリセットすることを意味します。

の前にのアクションを追加しているため、Label.setText()が呼び出されていると、その位置はリセットされ、その後のアクションは正しく機能しません。

テキストを設定してから、アクタの位置をオフスクリーンに設定してから、アクションでスライドを追加してください。

関連する問題