Libgdx KeyUp/KeyDown仅捕获一次

Libgdx KeyUp/KeyDown仅捕获一次,libgdx,Libgdx,我试图在每次按下BACK或SCAPE键时显示一个对话框。但是,该事件只被捕获一次,对话框会显示,但如果我按“否”按钮将其关闭,则在转到另一个屏幕之前,它将不会再次出现 这就是我如何捕捉KeyUp事件的方式: @Override public boolean keyUp(int keycode) { if (keycode == Keys.BACK || keycode == Keys.ESCAPE) { dialog.setVisible(true);

我试图在每次按下BACK或SCAPE键时显示一个对话框。但是,该事件只被捕获一次,对话框会显示,但如果我按“否”按钮将其关闭,则在转到另一个屏幕之前,它将不会再次出现

这就是我如何捕捉KeyUp事件的方式:

@Override
public boolean keyUp(int keycode) {     
    if (keycode == Keys.BACK || keycode == Keys.ESCAPE) {

        dialog.setVisible(true);
    }
    return false;
}
这是对话框内的“我的”按钮:

    btnNo.addListener(
            new ClickListener() {
                public boolean touchDown(InputEvent event, float x, float y, int pointer, int button)
                {
                    return true;
                }

                public void touchUp(InputEvent event, float x, float y, int pointer, int button){
                    dialog.setVisible(false);
                }
            });

如果您有任何想法,请让我知道…

查看以下网站,他们对如何在LibGDX中使用Dialog有清晰的描述我的问题已通过渲染中的以下块代码得到解决:

    if (Gdx.input.isKeyPressed(Keys.BACK) || Gdx.input.isKeyPressed(Keys.ESCAPE)){
        Gdx.input.setCatchBackKey(true);
        dialog.setVisible(true);
    }

如果按下BACK或SPACE,您是否试图不断提示用户如果需要从Dialogue捕获返回值另一种方法是创建布尔值并设置为false,然后基于布尔值创建while循环如果为true,则将对话框显示放在其中,如果对话框返回YES,则将布尔变量设置为true,以便如果按下对话框“否”,则可以退出while循环,否则将布尔变量设置为false,以便while循环继续提示用户。谢谢@GeorgeSaad…这基本上是一个显示退出游戏的对话框?是和否按钮。。。。对话框显示一次,但随后停止,正如您所看到的按钮NO一样,只需将对话框可见性设置为FALSE。不确定如何从对话框中捕获返回值。@GeorgeSaad,好的,让我试试第二种方法。您能告诉我您使用什么框架让我给出语法吗?您好……这与未调用键事件有关。对话框本身工作正常。我确信@Devester在创建对话框实例时,在设置Dialog.SetVisiblefalse之前,在触摸事件上设置按钮YES和NO以及其他值的选项。请检查按下了哪个按钮,例如,如果Dialog.button==YES Dialog.SetVisiblefalse;elsedialog.Button==NO dialog.SetVisibletrue;