2017-09-13 3 views
0

Je réalise une animation simple en utilisant des acteurs (étiquettes, à préciser) et des actions. Mon plan initial était de déplacer l'un d'eux loin vers la gauche instantanément, puis de le faire apparaître doucement à travers le bord de l'écran, en remplaçant un autre. Mais chaque fois qu'une nouvelle action est exécutée, la position de Label se réinitialise, donc je ne peux pas obtenir l'effet que j'ai prévu. Comment l'éviter? le code est ici, si vous en avez besoin:La position de l'acteur Libgdx se réinitialise après l'ajout d'une autre action

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

Répondre

1

Cela peut ne pas fonctionner, mais en regardant dans le code source de Label.setText() révèle que la méthode appelle Actor.invalidateHierarchy. Cela signifie que tout ce qui contient l'acteur lastAttack va réinitialiser la position lastAttack. Puisque vous ajoutez les actions avant vous appelez Label.setText(), la position sera réinitialisée et les actions ne fonctionneront pas correctement.

Vous devez essayer de définir le texte, puis de définir la position de l'acteur sur l'écran, puis d'ajouter la diapositive dans Action.