libgdx表可以';你不能让ChangeListener点击启动吗?
我已将一个表添加到一个阶段,但我无法为其启动单击侦听器:libgdx表可以';你不能让ChangeListener点击启动吗?,libgdx,Libgdx,我已将一个表添加到一个阶段,但我无法为其启动单击侦听器: Table table = new Table(); table.setX(0); table.setY(0); table.setWidth(300); table.setHeight(300); table.addListener(new ChangeListener() { @Override public void changed(ChangeEvent event, Actor actor) {
Table table = new Table();
table.setX(0);
table.setY(0);
table.setWidth(300);
table.setHeight(300);
table.addListener(new ChangeListener() {
@Override
public void changed(ChangeEvent event, Actor actor) {
System.out.println("click");
}
});
stage.addActor(table);
我在桌子上设置了一个背景补丁,渲染效果很好。点击没有效果。如果我向表中添加标签或按钮之类的内容,然后将相同的ChangeListener设置为这些小部件,则侦听器将正常启动
这张桌子是否需要一些特殊的处理
谢谢
---------更新-------------------
我实现此功能的唯一方法是使用EventListener阻止表实例上的所有交互:
table.addListener(new EventListener() {
@Override
public boolean handle(Event event) {
return true;
}
});
所有的事件都会像预期的那样在这里发生
我还尝试将表设置为可触摸,但ChangeListener仍然无法启动:
table.setTouchable(Touchable.enabled);
table.setListener(....);
所以我想我会坚持使用EventListener方法。libgdx中的
表在其构造函数setTouchable(touchable.childrenOnly)中默认情况下是不可触摸的代码>(查看)被调用,这意味着此参与者(`Table')将不会获得任何输入事件,但其子级将获得(查看)
因此,要为表
启用输入事件,而不仅仅是为其子表启用输入事件,您需要调用setTouchable(Touchable.enabled)
我希望这能解决您的问题。这对我来说仍然不起作用。实现这一点的唯一方法是向面板添加EventListener,然后为handle()方法返回“true”。更新了上面的答案。@user3203425我刚刚又看了一遍这个问题,我注意到您正在使用changelister
。为什么不添加一个ClickListener
?如果您使用ClickListener
而不是ChangeListener
,并调用setTocuhable(true)
,我猜单击事件将被触发,表将注意到它们。