我有一个HudStage类(扩展了LibGDX Stage类),我正在绘制一个填充当前游戏信息的表,如位置, Health 点等 .

由于我还想在此表中使用TextButton,因此我实现了以下代码:

public class HUDStage extends Stage{
    public HudStage() {
        ...
        Table table = new Table();
        ...

        final TextButton button = new TextButton("buttontext", skin);
        button.addListener(new ChangeListener() {
            public void changed(ChangeEvent event, Actor actor) {
                System.out.println("buttonchecked: " + button.isChecked());
            }
        });
        table.add(button).left();
        ...
        clear();
        this.addActor(table);
    }
    ...
}

哪个工作正常,只要我在该构造函数中调用代码只有一次 . 我可以单击按钮,正在打印正确的行 .

因为要绘制的信息在我的主生命周期中每次渲染()时都会更新,所以我每次都必须再次创建表格 . 我将构造函数中的EXACT相同的表代码放入一个新方法,并在每个render()中调用它 - 手动调用 .

现在更新的数据以我想要的方式显示,TextButton仍然可见 . 但突然之间我再也无法点击它......

在研究了为什么我无法使TextButton正常工作之后,我确保了InputProcessor并且按钮的大小设置正确(无论如何都不应该有所作为,因为它已经在一次调用中正常工作) . 此外,该表是此HudStage中唯一的Actor . 我进一步测试将TextButton放入一个全局变量,因此每次使用相同的TextButton和相同的ChangeListener,我只是无法让它工作,如果有人可以帮我解决这个问题,我会很高兴...