我一直在使用SDL
在c++
进行2D游戏,并发现某些组合键不起作用。
例如,如果我按住向左和向上箭头键,SDL
无法识别按下的右箭头键。经过一些研究,我发现这可能是由于密钥阻塞或鬼影,并且没有解决方案。
其他程序员如何解决这个问题?
在玩大多数现有游戏时,我没有遇到过此限制。我从来没有在Java中遇到过这个问题。
以下是代码示例:
while(SDL_PollEvent(&event))
{
if(event.type == SDL_KEYDOWN)
{
switch(event.key.keysym.sym)
{
case SDLK_UP:
std::cout << "Up pressed" << std::endl;
break;
case SDLK_DOWN:
std::cout << "Down pressed" << std::endl;
break;
case SDLK_LEFT:
std::cout << "Left pressed" << std::endl;
break;
case SDLK_RIGHT:
std::cout << "Right pressed" << std::endl;
break;
}
}
else if(event.type == SDL_KEYUP)
{
switch(event.key.keysym.sym)
{
case SDLK_UP:
std::cout << "Up released" << std::endl;
break;
case SDLK_DOWN:
std::cout << "Down released" << std::endl;
break;
case SDLK_LEFT:
std::cout << "Left released" << std::endl;
break;
case SDLK_RIGHT:
std::cout << "Right released" << std::endl;
break;
}
}
}
答案 0 :(得分:1)
没有真正解决方法,因为它是特定于键盘的。例如,在我的笔记本键盘上,如果按下某些键,我只能按一定数量的键。
您可以尝试减少某人必须立即按下的按键数量,但这会很棘手。