我正在尝试使用 libgdx 开发某种打字训练器,但遇到了此类问题。我需要一种方法来检测用户按下的键,而不是显示它(如果是字母)或清除输入(如果是空格键)。我想出了这个解决方案:
StringBuilder typeArea = new StringBuilder();
if (Gdx.input.isKeyJustPressed(Input.Keys.A)) {
typeArea.append(Input.Keys.toString(Input.Keys.A));
} else if (Gdx.input.isKeyJustPressed(Input.Keys.B)) {
typeArea.append(Input.Keys.toString(Input.Keys.B));
} else if ... {
...
} else if (Gdx.input.isKeyJustPressed(Input.Keys.SPACE)) {
typeArea.setLength(0);
}
感觉应该有更优雅的方式。我正在寻找这样的东西:
String letters = "abcdefg...";
StringBuilder typeArea = new StringBuilder();
if (Gdx.input.isKeyJustPressed(Input.Keys.ANY_KEY)) {
if (letters.indexOf(getKeyPressedValue()) >= 0) {
typeArea.append(getPressedKeyValue());
} else if (getKeyPressedValue() == Input.Keys.SPACE) {
typeArea.setLength(0);
}
}
或者也许还有另一种更简单的方法来做到这一点。有什么建议吗?
最佳答案
您可以创建自己的 InputListener 并重写 keyDown 方法,该方法通过事件发送键码。
InputListener il = new InputListener(){
@Override
public boolean keyDown(InputEvent event, int keycode) {
typeArea.append(Keys.toString(keycode));
return super.keyDown(event, keycode);
}
};
或者您可以实现一个 InputProcessor 并使用其中的 Override the KeyDown 方法。
在您的类中实现 InputProcessor 接口(interface),然后将输入处理器设置为您的类
Gdx.input.setInputProcessor(this);
并重写 keyDown 方法
@Override
public boolean keyDown(InputEvent event, int keycode) {
typeArea.append(Keys.toString(keycode));
return super.keyDown(event, keycode);
}
关于java - 如何获取任意按下的键值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44041775/