libgdx表无法获取ChangeListener以触发点击?

use*_*425 3 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) {
        System.out.println("click");
    }
});

stage.addActor(table);
Run Code Online (Sandbox Code Playgroud)

我在桌子上设置了一个背景九个补丁,它渲染得很好.点击无效.如果我向表中添加类似标签或按钮的内容,则将相同的ChangeListener设置为这些小部件,监听器就可以正常启动.

Table需要一些特殊处理吗?

谢谢

---------更新-------------------

我可以使用它的唯一方法是使用EventListener来阻止Table实例上的所有交互:

table.addListener(new EventListener() {
    @Override
    public boolean handle(Event event) {
        return true;
    }
});
Run Code Online (Sandbox Code Playgroud)

所有的事件都会按照预期在这里发射.

我也尝试将表设置为可触摸,但仍然不会触发ChangeListener:

table.setTouchable(Touchable.enabled);
table.setListener(....);
Run Code Online (Sandbox Code Playgroud)

所以我想我会坚持使用EventListener方法.

Spr*_*bua 5

Table在libgdx是不是touchable在默认情况下,在其构造函数setTouchable(Touchable.childrenOnly);(看看的)被调用,这意味着,这Actor(在`Table')不会得到任何输入事件,但它的孩子会(看的javadoc).

因此,Table要为其子项启用输入事件,您需要调用setTouchable(Touchable.enabled).

我希望这能解决你的问题.