2017-09-13 27 views
0

我正在使用Actors(標籤,要預縮)和Actions來製作一些簡單的動畫。 我最初的計劃是立即將其中一個移動到左邊,然後讓它順利地通過屏幕邊緣出現,取代另一個。但每次執行新的動作時,Label的位置都會重置,所以我無法獲得我計劃的效果。我如何避免它? 這裏的代碼,如果你需要它: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(),位置將被重置,然後這些操作將無法正常工作。

您應該嘗試設置文本,然後將演員的位置設置爲關閉屏幕,然後在「操作」中添加幻燈片。