我有一个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,我只是无法让它工作,如果有人可以帮我解决这个问题,我会很高兴...