SDL密钥阻塞和重影

时间:2013-04-27 03:03:25

标签: c++ sdl

我一直在使用SDLc++进行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;
        }
    }
}

1 个答案:

答案 0 :(得分:1)

没有真正解决方法,因为它是特定于键盘的。例如,在我的笔记本键盘上,如果按下某些键,我只能按一定数量的键。

您可以尝试减少某人必须立即按下的按键数量,但这会很棘手。