说实话,我不知道我做错了什么。我想从ImageButton
获取ClickListener
对象,但出现问题。
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());
}
});
}
答案 0 :(得分:1)
event.getTarget()
可能会很危险,如果角色中有层次结构。
例如,假设您有:
Group Actor <= ImageButton Actor 1 <= Label Actor 1
<= ImageButton Actor 2 <= Label Actor 2
<= ImageButton Actor 3 <= Label Actor 3
,然后在Group Actor上创建一个eventListener。
event.getTarget()
将为演员提供精确点击的位置
例如,如果您单击“ ImageButton Actor 2”,则可以尝试event.getTarget().getParent()
来获取Group Actor,但是如果您单击Label Actor中的一个,则它将不起作用(父级为相应的ImageButton)
最好的方法是让Actor通过event.getListenerActor()
答案 1 :(得分:0)
要获取触发了哪个事件的Actor
实例,您需要使用getTarget()
事件的方法。如果您确定该监听器仅用于按钮,则可以将其从Actor
转换为Button
selectedUnit = buttonUnitsList.indexOf((Button)event.getTarget());
请注意,如果您将侦听器用于其他类型的Actor,您将获得强制转换异常