我正在使用Actors(Labels,要进行精简)和Actions制作一些简单的动画。 我最初的计划是将其中一个立即向左移动,然后通过屏幕边缘平滑地显示,替换另一个。但是每次执行一个新动作时,Label的位置都会重置,所以我无法获得我计划的效果。我该如何避免呢? 这是代码,如果你需要它:
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));
}
})));
}
})));
答案 0 :(得分:1)
这可能不起作用,但查看Label.setText()
的源代码会发现该方法会调用Actor.invalidateHierarchy
。这意味着包含lastAttack
演员的任何内容都会重置lastAttack
的位置。
因此,在之前添加之前的操作时,您正在调用Label.setText()
,此位置将被重置,然后这些操作将无法正常运行。
您应该尝试设置文本,然后将actor的位置设置为屏幕外,然后在Action中添加幻灯片。