我正在尝试将一些使用 SDL 的代码转换为 Java。我正在使用 sdljava 绑定。
sdljava 使用 SWIG 作为 C 数据类型和 Java 之间的桥梁。为了得到 的等价物SDL_GetKeyState()
,sdljava 提供了方法SWIG_SDLEvent.SDL_GetKeyState()
,它返回一个叫做 a 的东西SWIGTYPE_p_unsigned_char
。
当然,Java 没有unsigned char
类型,我不知道编译器认为这种 SWIG 类型实际上对 Java 代表了什么。在 C/C++ 中的正常使用SDL_GetKeyState()
类似于:
Uint8 *ks = SDL_GetKeyState(NULL);
if ( ks[SDLK_UP] ) { /* handle Up key */ }
...其中 SDL 键状态值(如 SDLK_UP)索引到数组中。
但是,以下 Java 代码:
SWIGTYPE_p_unsigned_char ks = SWIG_SDLEvent.SDL_GetKeyState(null);
if ( ks[SDLKeyValues.SDLK_UP] != 0) { /* handle Up key */ }
导致编译器错误,“表达式的类型必须是数组类型,但它解析为 SWIGTYPE_p_unsigned_char。”
我想知道的是,在调用 SWIG_SDLEvent.SDL_GetKeyState() 之后,您如何使用它返回的内容来检查各个键的状态?