当前位置: 首页 > 知识库问答 >
问题:

Libgdx:Dialog不侦听输入

鲁华茂
2023-03-14

我的目标是向用户显示一个对话框,以便用户能够选择要添加到舞台上的演员。我在实现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);
    }
}

共有1个答案

单于越
2023-03-14

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

Gdx.input.setInputProcessor(stage);

告诉我那有用吗

 类似资料:
  • 我有一个简单的HibernateInterceptor,基本上我想自动设置几个字段。此拦截器(如下所示)扩展了EmptyInterceptor: 我使用spring配置文件进行布线,如下所示: 但是,永远无法到达拦截器。有人有什么线索吗?我还尝试将以下内容添加到事务管理器bean定义中,如下所示:

  • 我已经用重新启动了influxdb,但是没有任何帮助。 我错过了什么? 更新7.11.2016 21:59 更新13.4.2020问题已修复。 这是一个老问题,我不记得我到底是如何解决这个问题的,但我做到了。如果我没记错的话,问题是流入没有加载正确的配置文件,这是我自己当时的愚蠢。可悲的是,我不记得为什么会发生这种事,但我记得这是我自己做的。记住总是正确地阅读文档,并谷歌出它的sht。

  • 问题内容: 我下面发布的示例代码显示了两个类。一个实现KeyListener,另一个实现Runnable,并在每20 ms休眠的无限循环中运行。当按下键时,采用int形式的keyChar用作索引,设置布尔数组的索引true或false,表示是否按下了该键。同时,过程循环正在键数组中搜索其true或false值,并将true设置为false,然后打印出char。我的问题是我是否需要使用带锁的同步来访

  • 问题内容: 我当时在上网,但找不到很好的信息。我试图在每次运行应用程序时检测按键。我正在使用JavaFX并将其与FXML一起运行。我尝试了很多事情,但没有任何效果。请帮我。 问题答案: 您应该签出Ensemble示例。这是关键的侦听器代码。

  • 我正在使用Realex Payments的HPP API开发一个卡支付页面,其中包含一个iFrame,用于托管Realex页面。在Realex请求表单上,我将字段HPP_POST_维度和HPP_POST_响应设置为我的URL,如下所示: 付款页: www.example.com/account/payment.html 隐藏字段值用于在HPP页面大小更改和事务完成时,使用事件侦听器将数据从Real

  • 虽然计算属性在大多数情况下更合适,但有时也需要一个自定义的侦听器。这就是为什么 Vue 通过watch选项提供了一个更通用的方法,来响应数据的变化。当需要在数据变化时执行异步或开销较大的操作时,这个方式是最有用的。例如: <div id="watch-example"> <p> Ask a yes/no question: <input v-model="question">