【问题标题】:SDL Key blocking and ghostingSDL 密钥阻止和重影
【发布时间】:2013-04-27 03:03:24
【问题描述】:

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

【问题讨论】:

  • 你的意思是这个问题在使用java而不是c++和sdl时没有出现相同的设置?
  • 显示有问题的代码怎么样?
  • @didierc 这正是我的意思
  • 如果它在其他情况下工作,那么它不会阻塞或重影,因为这些术语描述了某些键盘(通常是便宜的键盘)的硬件限制。如果那样的话,Java 将无法获得按键是这样的。请提供一个我们可以运行并演示您遇到的问题的最小代码示例。
  • 我不知道为什么你的问题被赞成,我不得不要求你澄清,这证明你没有为我们提供验证你的说法的方法。

标签: c++ sdl


【解决方案1】:

没有办法解决这个问题,因为它是特定于键盘的。例如,在我的笔记本电脑键盘上,如果按下某些键,我只能同时按下一定数量的键。

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-07-11
    • 1970-01-01
    • 2011-06-20
    相关资源
    最近更新 更多