【发布时间】:2015-06-13 06:42:44
【问题描述】:
在 SDL 2 中搜索同时检测多个键的方法时,我遇到了 SDL 1.x 的这段代码:
//author: Rob Loach
// Global key buffer
bool keys[256];
while(SDL_PollEvent(&mainEvent))
{
if(mainEvent.type == SDL_KEYDOWN)
{
keys[mainEvent.key.keysym.sym] = true;
}
else if(mainEvent.type == SDL_KEYUP)
{
keys[mainEvent.key.keysym.sym] = false;
}
}
我尝试在 SDL2 和 std::array<bool, 256> 中实现它,但我使用了带有向上按钮的 Segmentation fault: 11。
那时我看到了这个:https://wiki.libsdl.org/SDLKeycodeLookup。
大多数“特殊”键,包括箭头、功能、符号等,都有十亿的十进制表示。
即使使用简单的代码printf("%d\n", e.key.keysym.sym);,也可以说向上按钮给出:
1073741906
Segmentation fault: 11
我使用的是 Mac,如果它与错误代码有任何区别。
那么,SDL 2 中有哪些解决方案?
【问题讨论】:
-
您可以使用
std::map,这样您就不会遇到这个问题。不过,我认为SDL2对您没有什么特别的帮助。 -
@olevegard 完美!你介意把它写成答案吗?
标签: c++ segmentation-fault sdl-2 signed-integer