2017-09-13 74 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(),位置将被重置,然后这些操作将无法正常工作。

您应该尝试设置文本,然后将演员的位置设置为关闭屏幕,然后在“操作”中添加幻灯片。