Я пытаюсь преобразовать в Java некоторый код, который использует SDL. Я использую привязки sdljava.
sdljava использует SWIG в качестве моста между типами данных C и Java. Чтобы получить эквивалент SDL_GetKeyState()
, sdljava предоставляет метод SWIG_SDLEvent.SDL_GetKeyState()
, который возвращает то, что называется SWIGTYPE_p_unsigned_char
.
Конечно, в Java нет типа unsigned char
, и я не знаю, что, по мнению компилятора, этот тип SWIG фактически представляет для Java. Обычное использование SDL_GetKeyState()
в C / C ++ будет выглядеть примерно так:
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 (), как вы используете то, что он возвращает для проверки состояния отдельных ключей?