Input Libgdx:Dialog不';不要听输入

Input Libgdx:Dialog不';不要听输入,input,dialog,libgdx,Input,Dialog,Libgdx,我的目标是向用户显示一个对话框,以便用户能够选择要添加到舞台上的演员。我在实现Screen和GestureListener的应用程序的主屏幕中执行此操作。(我需要手势监听器来听双击)。我在重写的touchtown()方法中创建对话框。 当对话框出现时,它不工作。如果我点击屏幕上的任何一点,屏幕将持续收听着陆时的输入 代码如下: public class SquareDefense implements Screen, GestureListener { .... @Overrid

我的目标是向用户显示一个对话框,以便用户能够选择要添加到舞台上的演员。我在实现Screen和GestureListener的应用程序的主屏幕中执行此操作。(我需要手势监听器来听双击)。我在重写的touchtown()方法中创建对话框。 当对话框出现时,它不工作。如果我点击屏幕上的任何一点,屏幕将持续收听着陆时的输入

代码如下:

public class SquareDefense implements Screen, GestureListener {
    ....
    @Override
    public boolean touchDown(float x, float y, int pointer, int button) {

        System.out.println("touchDown");

        if(squareDefenseTable.getActor(x, y) != null) {
            // rotate the clicked actor!
            squareDefenseTable.rotateActor(x, y);
        }
        else {
            showDialog();
        }

        return true;
    }

    private void showDialog() {
        Dialog dialog = new Dialog("Choose an action", skin) {

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

            @Override
            public Dialog show(Stage stage) {
                return super.show(stage);
            }

            @Override
            public void cancel() {
                super.cancel();
            }

            @Override
            public float getPrefHeight() {
                return 50f;
            }
        };
        dialog.button("Yes", true);
        dialog.button("No", false);
        dialog.key(Input.Keys.ENTER, true);
        dialog.key(Input.Keys.ESCAPE, false);
        dialog.show(stage);
    }
}

我认为您没有添加这行代码:

Gdx.input.setInputProcessor(stage);

告诉我这是否有效

我认为您没有添加这行代码:

Gdx.input.setInputProcessor(stage);

告诉我在show()方法中这是否有效,我有Gdx.input.setInputProcessor(新的GestureDetector(this));通过这一行,您可以删除作为输入处理器的阶段。若要将两者相加,您需要一个输入多路复用器。谢谢。现在它可以工作了,即使当我在对话框中选择一个动作,并在舞台上添加一个演员时,舞台的背景也消失了。很好,它现在可以工作了:),请把你的解决方案的细节放在这里,这样其他人就可以从中受益,别忘了给答案打分,好运气我有Gdx.input.setInputProcessor(新的GestureDetector)的show()方法(此));通过这一行,您删除了作为输入处理器的阶段。若要添加这两个,您需要一个输入多路复用器。谢谢。现在它可以工作了,即使我在对话框上选择了一个动作,并向阶段添加了一个演员,阶段的背景也消失了,很好,它现在可以工作了:),请将您的解决方案的细节放在这里,以便其他人可以从中受益,别忘了给答案打分,好lucki想知道你的问题是否解决了,如果是,请选择正确的答案来解决你的问题,谢谢我想知道你的问题是否解决了,如果是,请选择正确的答案来解决你的问题,谢谢