无法单击Libgdx对话框按钮

时间:2016-11-23 16:54:57

标签: input libgdx dialog

我无法正确实施对话框。它无法识别按钮点击 - 即使按钮向下动画也不会发生。但是,它确实识别按键(例如在我的情况下输入或esc)。 Dialog似乎确实位于舞台对象之上,所以我很困惑为什么它没有注册我的点击。

我有一个InputMultiplexer,它有处理器InputHandler类(实现InputProcessor)和stage,按顺序:

InputMultiplexer im = new InputMultiplexer();
im.addProcessor(new InputHandler(stage));
im.addProcessor(stage);//trying to make dialog work by doing this
Gdx.input.setInputProcessor(im);

这是我在舞台中定义的showDialog方法:

public void showDialog() {
    Dialog dialog = new Dialog("Quit?", skin) {

        @Override
        protected void result(Object object) {
            boolean exit = (Boolean) object;
            if (exit) {
                Gdx.app.exit();
            } else {
                remove();
            }
        }

    };
    dialog.button("Yes", true);
    dialog.button("No", false);
    dialog.key(Input.Keys.ENTER, true);
    dialog.key(Input.Keys.ESCAPE, false);
    dialog.show(this);
}

showHialog()方法在识别游戏结束时从InputHandler调用(我将其设置为在触摸时检查和更新游戏状态,因为它是基于触摸的游戏)。我的理解是,由于多路复用器在游戏结束时从InputHandler方法接收到错误的返回,然后它进入输入阶段,这似乎仅在我在对话框上使用按键时才起作用,即进入退出游戏, esc删除对话框,但单击按钮不执行任何操作。

这是我的Screen的渲染功能,如果它是相关的:

@Override
public void render(float delta) {
    Gdx.gl.glClearColor(1,1,1,1);
    Gdx.graphics.getGL20().glEnable(GL20.GL_BLEND);
    Gdx.graphics.getGL20().glBlendFunc(GL20.GL_SRC_ALPHA, GL20.GL_ONE_MINUS_SRC_ALPHA);
    Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT | GL20.GL_DEPTH_BUFFER_BIT | (Gdx.graphics.getBufferFormat().coverageSampling?GL20.GL_COVERAGE_BUFFER_BIT_NV:0));
    stage.act();
    stage.getCamera().update();
    stage.draw();
} 

0 个答案:

没有答案