libgdx如何从ClickListener获取按钮



说实话,我不知道我在做什么错。我想从ClickListener获取ImageButton对象,但是出了问题。

 public void createButton() {
    button = new ImageButton(this.skin);
    buttonUnitsList.add(button);
    button.addListener(new ClickListener() {
        @Override
        public void clicked(InputEvent event, float x, float y) {
           selectedUnit = buttonUnitsList.indexOf(this.getButton());
        }
    });       
}

event.getTarget()如果您在演员中有层次结构。

例如,想象您有:

Group Actor <= ImageButton Actor 1 <= Label Actor 1
            <= ImageButton Actor 2 <= Label Actor 2
            <= ImageButton Actor 3 <= Label Actor 3

您在小组演员上创建一个EventListener。

event.getTarget()将为您提供精确单击的演员

如果您单击" ImageButton Actor 2"。例如,您可以尝试使用event.getTarget().getParent()来获取小组演员,但是如果您单击标签演员之一(父母将是相应的ImageButton)

,它将无法使用。

最好的做法是获得由event.getListenerActor()

创建EventListener的演员

要获取 Actor的实例,您需要使用 getTarget()事件的方法。如果您确定听众仅与按钮一起使用,则可以将其从Actor升级到Button

selectedUnit = buttonUnitsList.indexOf((Button)event.getTarget());

请注意,如果您将侦听器用于另一种类型的演员,您将获得施法异常

最新更新