2017-09-13 5 views
0

저는 액터 (레이블, 정밀도 지정) 및 동작을 사용하여 간단한 애니메이션을 만들고 있습니다. 나의 초기 계획은 그 중 하나를 즉시 왼쪽으로 멀리 이동시킨 다음, 화면의 가장자리를 통해 원활하게 나타나도록하여 다른 것을 대체하는 것이 었습니다. 그러나 새로운 액션이 실행될 때마다 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()으로 전화를 걸면 위치가 재설정되고 작업이 제대로 작동하지 않습니다.

텍스트를 설정 한 다음 액터의 위치를 ​​끄기 화면으로 설정하고 슬라이드를 동작에 추가해야합니다.