簡體   English   中英

添加另一個動作后,libgdx角色位置重置

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM