我目前正在尝试使用 LibGDX 在我的 3D ModelBatch 上应用叠加层。除 SelectBox 外,一切正常。实例化后,它会出现在我的屏幕上,我可以单击它一次,但随后它会卡住。下拉列表未显示,我的应用程序不再注册点击。但是,如果我的第二次单击是在列表的标准位置下,即下拉时应该绘制的位置,则选择了一个项目,但是任何第三次单击只会将列表返回到原始选择的项目并且没有点击由我的应用程序注册了。我在桌面上运行应用程序。
使用 SelectBox.class 中的断点,我注意到第三次和其他下一次点击由 SelectBox.class 注册为负责选择项目的 Listener 中列表的一部分。
selectBox = new SelectBox<Object>(skin);
selectBox.setItems(array);
selectBox.setSelected("Custom");
stage.addActor(selectBox);
array 在这种情况下是仅包含字符串的 Object[] 实例。这是我与 selectBox 相关的唯一代码部分。
我一开始尝试使用 String[] 数组,但后来按照 LibGDX 论坛上的建议切换到 Object。
我目前正在使用 2014/04/11 的最新 Nightly Build,因为我还需要 TextArea,它还没有稳定版本。但是,我试过稳定版0.9.9,还是不行。
我是否使用了正确的代码来声明我的 SelectBox,或者我可以做些什么来使 SelectBox 正常运行,即在单击时显示其列表并在选择项目后返回正常状态?
最佳答案
我遇到了同样的问题,要解决它,您必须将 delta 字段(稍作改动)发送到方法 stage.act();
下面是一些示例代码:
public void render(float delta) {
Gdx.gl.glClearColor(0, 0, 0, 1); //sets up the clear color (background color) of the screen.
Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT); //instructs openGL to actually clear the screen to the newly set clear color.
// a stage has its own batch so don't put it within batch.begin() and batch.end()
stage.act(Math.min(Gdx.graphics.getDeltaTime(), 1 / 30f)); //you are likely missing THIS LINE :D
stage.draw();
}
希望对您有所帮助!! :D
关于drop-down-menu - LibGDX 中的 SelectBox 在单击后不显示并卡住程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23025204/