在 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.Keys
和
com.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);
}
我正在将现有的网页游戏移植到 libgdx。游戏由我不想更改的脚本控制。 该脚本使用 javascript 键码值指定对某些按键事件执行的操作。 IE。当按下 space 时,"OnKeyPress=32:" 将定义对 运行 的操作。 "OnKeyPress=40:" 将定义 运行 按下时的动作等
现在,由于 LibGDX 使用不同的键码系统,我需要一些方法来在按下正确的键时触发我现有的事件。
@Override
public boolean keyDown(int keycode) {
//convert input processors keycode to javascripts?
}
我只能认为我必须在两者之间创建某种大型静态哈希图映射 GDXs Input.Keys 和 com.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);
}