我目前正在尝试在3D ModelBatch上应用LibGDX覆盖。除了SelectBox之外,其他一切都正常。一旦实例化,它就会显示在我的屏幕上,我可以单击一次,但随后冻结。下拉列表未显示,并且我的应用程序不再注册点击。但是,如果第二次单击位于列表的标准位置下(即下拉菜单时应在该位置进行绘制),则选中一个项目,但是任何第三次单击都只会将该列表返回到原始选定项,而没有单击由我的应用程序注册了。我在桌面上运行该应用程序。

使用SelectBox.class中的断点,我能够注意到SelectBox.class将第三次和其他下次单击注册为负责选择项目的侦听器中列表的一部分。

selectBox = new SelectBox<Object>(skin);
selectBox.setItems(array);
selectBox.setSelected("Custom");
stage.addActor(selectBox);

在这种情况下,数组是仅包含字符串的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

10-08 11:32