在libgdx中按名称获取一个actor

jos*_*mmo 5 java android libgdx scene2d

如何在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);
        }
    };
Run Code Online (Sandbox Code Playgroud)

上面的演员是被触摸的演员.一旦触及这个特定的演员,我需要改变另一个演员的颜色.我究竟该如何以名字命名这位演员?

noo*_*one 19

我想指出,已经有一种方法可以找到一个Actor名字.

它的工作原理如下:stage.getRoot().findActor(name).

无需自己实施.:)

  • 每当我忘记这一点并记住正确的搜索词以再次找到这个问题时,我很遗憾这没有被标记为答案。谢谢你! (2认同)

Les*_*tat 5

首先,您需要为您的 Actor 设置一个名称:( Actor#setName )

myactor.setName("myactor");
Run Code Online (Sandbox Code Playgroud)

然后你可以获取该舞台中的所有 Actor,如下所示:( Stage#getActors )

Array<Actor> stageActors = mystage.getActors();
Run Code Online (Sandbox Code Playgroud)

然后,您可以使用Actor#getName检查该名称的所有 Actor:

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;
    }
}
Run Code Online (Sandbox Code Playgroud)

但如果您保留对所有 Actor 的引用并使用它,则会更容易性能更高。