【问题标题】:SelectBox in LibGDX doesn't display and freezes the program after a clickLibGDX中的SelectBox在单击后不显示并冻结程序
【发布时间】:2014-04-12 01:59:42
【问题描述】:

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

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

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 正常运行,即在单击时显示其列表并在选择项目后返回正常状态?

【问题讨论】:

    标签: drop-down-menu libgdx


    【解决方案1】:

    我遇到了同样的问题,要解决它,您必须将 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

    【讨论】:

    • 哇。在 SelectBox 的类似问题上花了几个小时(尝试单击框后 UI 冻结),我不知道该怎么做。幸运的是,这解决了所有问题。真的很高兴我找到了这个。 :) 非常感谢。
    猜你喜欢
    • 2015-10-08
    • 2020-02-09
    • 1970-01-01
    • 1970-01-01
    • 2013-12-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多