[英]Libgdx actor position resets after adding another action
我正在使用Actors(准確地說是標簽)和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));
}
})));
}
})));
這可能不起作用,但是查看Label.setText()
的源代碼可以發現該方法調用Actor.invalidateHierarchy
。 這意味着包含lastAttack
actor的任何內容都會重置lastAttack
的位置。
因此,由於要在調用Label.setText()
之前添加動作,所以位置將被重置,因此動作將無法正常工作。
您應該嘗試設置文本,然后將角色的位置設置為屏幕外,然后在“動作”中添加幻燈片。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.