Libgdx - 如何检查按键是否一直被按住?

8

我正在使用Java libgdx游戏库,想知道如何判断键盘按键是否一直被按住而不是只按下和松开。

我需要知道这个信息,因为我想在按键被按下时播放较短的mp3文件,在按键被长按时播放较长的mp3文件。

1个回答

13

是的,你可以通过Gdx.input.isKeyPressed(Input.Keys.XXX)来轻松检查它们,或者通过实现一个InputProcessor

public class MyInputProcessor implements InputProcessor {

    public boolean keyPressed;

    @Override
    public boolean keyDown(int keycode) {
        if (keycode == Input.Keys.XXX) {
            keyPressed = true;
        }

        return false;
    }

    @Override
    public boolean keyUp(int keycode) {
        if (keycode == Input.Keys.XXX) {
            keyPressed = false;
        }

        return false;
    }
}

像这样使用:

MyInputProcessor processor = new MyInputProcessor();
Gdx.input.setInputProcessor(processor);

...

if (processor.keyPressed) {
    // do some stuff
}

你可以在这里阅读更多相关内容。


2
这个不起作用,如果我想为按住事件连接两个键怎么办?我需要为每个可能的键制作一个布尔值吗?使用静态的Gdx.input.isKeyPressed方法可以保持按下状态,但应该有一种简单的方法来使用Interface使其工作。 - Madmenyo
libgdx API 中没有更高级的按键组合功能,你需要自己实现。 - noone

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接