java - 使用 LibGDX.scene2d 中的输入进行错误条件检查

标签 java if-statement libgdx conditional-statements scene2d

我正在使用 LibGDX.scene2d.ui 为我的游戏构建 GUI,当我尝试处理输入时遇到问题。我有以下代码可以在按下按钮时发生一些事情,但它不起作用:

enterButton.addListener(new InputListener() {
        @Override
        public boolean touchDown(InputEvent e, float x, float y, int p, int b) {
            Gdx.app.log("touched", "down");
            return true;
        }
        @Override
        public void touchUp(InputEvent e, float x, float y, int p, int b) {
            Gdx.app.log("touched", "up");
            if(x > enterButton.getX() && x < enterButton.getRight() && y > enterButton.getY() && y < enterButton.getTop()) {
                Gdx.app.log("cond", "cursor on actor");
                if(validate(loginField.getText(), passField.getText())) {
                    Gdx.app.log("cond", "validated");
                    openMenu();
                }
            }
            Gdx.app.log("untouched", "up");
        }
    });

但实际上相同的代码可以正常工作:

registerButton.addListener(new InputListener() {
        @Override
        public boolean touchDown(InputEvent e, float x, float y, int p, int b) {
            return true;
        }
        @Override
        public void touchUp(InputEvent e, float x, float y, int p, int b) {
            if(x > registerButton.getX() && x < registerButton.getRight() && y > registerButton.getY() && y < registerButton.getTop()) {
                registerWindow.setVisible(true);
                baseWindow.setVisible(false);
            }
        }
    });

单击 EnterButton 后,我得到了使用 LibGDX 日志记录生成的输出:

touched: down
touched: up
untouched: up

可能出了什么问题?

最佳答案

您可以尝试使用 ClickListener 来检查触摸是否在范围内,如下所示:

enterButton.addListener(new ClickListener() {
    @Override
    public void touchDown(InputEvent event, float x, float y, int pointer, int button) {
        return true;
    }

    @Override
    public void touchUp(InputEvent event, float x, float y, int pointer, int button) {
        if (isOver()) {
            if(validate(loginField.getText(), passField.getText())) {
                openMenu();
            }
        }
    }
});

您还可以尝试在 Actor 上设置调试标志,以便可以使用 enterButton.debug(); 来查看点击边界的实际位置。

关于java - 使用 LibGDX.scene2d 中的输入进行错误条件检查,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37903907/

相关文章:

java - 如何在点击时翻转 android 对话框?

java - 错误 : "The following classes could not be found: - android.support.v7.widget.GridLayout" after upgrading Android SDK Tools

Java列表设置列表项的背景

Python Pandas 根据多个其他列中的条件替换一列中的值

java - 我可以在 if 语句中声明一个数组吗?

java - 在Libgdx上获取鼠标和 Sprite 的坐标

java - 使用 Path 类在 Java 中的两个路径之间创建路径

java - 使 if-else 解决方案更高效、代码行更少 (Java)

java - libGdx 中的 GameState 到 JSON 的序列化不起作用,我该如何修复它?

java - 如何安全退出 lib gdx 应用程序?