在 javascript 键码和 libgdx 键码之间转换

Coverting between javascript keycodes and libgdx keycodes

我正在将现有的网页游戏移植到 libgdx。游戏由我不想更改的脚本控制。 该脚本使用 javascript 键码值指定对某些按键事件执行的操作。 IE。当按下 space 时,"OnKeyPress=32:" 将定义对 运行 的操作。 "OnKeyPress=40:" 将定义 运行 按下时的动作等

现在,由于 LibGDX 使用不同的键码系统,我需要一些方法来在按下正确的键时触发我现有的事件。

@Override
public boolean keyDown(int keycode) {
//convert input processors keycode to javascripts?
}

我只能认为我必须在两者之间创建某种大型静态哈希图映射 GDXs Input.Keyscom.google.gwt.event.dom.client.KeyCodes

但在解决这个问题之前,我想问问周围是否有更好的方法?

谢谢,

最后我只是创建了一个 class 来将一个键码 (com.badlogic.gdx.Input.Keys) 与另一个键码相关联。 (com.google.gwt.event.dom.client.KeyCodes)

相当容易,但任何人都应该注意并非所有东西都有 1:1 映射。

例如;

ALT_LEFT 和 ALT_RIGHT 都映射到 gwt/javascript 中的 ALT。

同样 CNTR 左右和 SHIFT 左右。

GDX 同时将 BACKSPACE 和 DELETE 视为相同的键。

这很自然,因为 GDX 需要跨平台,所以有不同的要求。

除此之外,似乎只需要一个 ImmutableMap 就可以完成这项工作....

/**
 * static mapping between javascript/gwt keycodes and gdxs
 **/
static ImmutableMap<Integer,Integer> keyCodeConversion = ImmutableMap.<Integer, Integer>builder()
        .put(Input.Keys.UP, GwtKeyCodeCopy.UP)
        .put(Input.Keys.DOWN, GwtKeyCodeCopy.DOWN)
        .put(Input.Keys.LEFT, GwtKeyCodeCopy.LEFT)
        .put(Input.Keys.RIGHT, GwtKeyCodeCopy.RIGHT)
        .....
        ...(lots more)
        .bind();


static public int getJavascriptKeyCode(int GdxKeycode){
    return keyCodeConversion.get(GdxKeycode);
}