簡體   English   中英

在libgdx中按名稱獲取一個actor

[英]Get an actor by name in libgdx

如何在libgdx中按名稱獲取actor?

我目前有以下ChangeListener:

    ChangeListener colorPickerListener = new ChangeListener()
    {
        public void changed(ChangeEvent event, Actor actor)
        {
            //Popup Window
            toolboxStage.addActor(blockWindow);
            //toolboxStage.getRoot().removeActor(blockWindow);
            Gdx.app.log("LevelEditorScreen", "Color Picker Selected");
            Gdx.app.log("LevelEditorScreen", "HUD Width: " + HUD_WIDTH);

            Gdx.input.setInputProcessor(toolboxStage);
        }
    };

上面的演員是被觸摸的演員。 一旦觸及這個特定的演員,我需要改變另一個演員的顏色。 我究竟該如何以名字命名這位演員?

我想指出已經有一種方法可以通過名稱找到一個Actor

它的工作方式如下: stage.getRoot().findActor(name)

無需自己實施。 :)

首先,您需要為Actor設置一個名稱:( Actor#setName

myactor.setName("myactor");

然后你就可以得到舞台上的所有Actors,如下所示:( Stage#getActors

Array<Actor> stageActors = mystage.getActors();

然后,您可以使用Actor#getName檢查該名稱的所有Actors:

int len = stageActors.size;
for(i=0; i<len; i++){
    Actor a = stageActors.get(i);
    if(a.getName().equals("myactor")){
        //a is your Actor!
        break;
    }
}

但是,如果您保留對所有Actors的引用並使用它,那么它將更容易高效。

我會重新使用已經給定的集團功能。 每個Stage都有一個根組,這實現了按名稱查找actor。 如果您使用分組系統,它的代碼比答案中給定的內部更安全。

該組的代碼看起來像這樣,並且更安全,因為如果您向舞台添加組,它也會查看組內部。

    /** Returns the first actor found with the specified name. Note this recursively compares the name of every actor in the group. */
    public Actor findActor (String name) {
            Array<Actor> children = this.children;
            for (int i = 0, n = children.size; i < n; i++)
                    if (name.equals(children.get(i).getName())) return children.get(i);
            for (int i = 0, n = children.size; i < n; i++) {
                    Actor child = children.get(i);
                    if (child instanceof Group) {
                            Actor actor = ((Group)child).findActor(name);
                            if (actor != null) return actor;
                    }
            }
            return null;
    }

鏈接到組類

如果你需要搜索很多時間來保持對Actor的尊重。 如果不是只使用serch方法。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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