gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-01 11:35:53 27 4
gpt4 key购买 nike

我在舞台上添加了一个表,但无法获得点击监听器来触发它:

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);

我在 table 上设置了一个背景 9-patch ,它渲染得很好。点击没有效果。如果我向表格添加标签或按钮之类的内容,然后为这些小部件设置相同的 ChangeListener,则监听器会正常触发。

Table 是否需要一些特殊处理才能使其工作?

谢谢

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

我可以让它工作的唯一方法是使用 EventListener 来阻止 Table 实例上的所有交互:
table.addListener(new EventListener() {
@Override
public boolean handle(Event event) {
return true;
}
});

所有事件都将在此处按预期触发。

我也尝试将表格设置为可触摸,但 ChangeListener 仍然不会触发:
table.setTouchable(Touchable.enabled);
table.setListener(....);

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

最佳答案

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

所以要为 Table 启用输入事件不仅是为了它的 child ,您还需要调用 setTouchable(Touchable.enabled) .

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

关于libgdx 表无法获得 ChangeListener 以触发点击?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27241601/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com