c++ - SDL_event KEYDOWN行为问题

标签 c++ sdl

这就是问题所在,我已经编写了一个事件循环来检测 keydown 和 keyup 事件。我遇到的问题是当按下并按住键时,keydown 事件会生成 keydown 和 keyup 事件。我正在使用箭头键移动对象,然后在释放键时停止移动(keyup)。任何帮助都会有帮助。谢谢。 =)

贾斯汀

附言我会发布代码,但我无法让它看起来正确。

print("         SDL_Event event;
    SDL_EnableKeyRepeat(0,0);
    while(SDL_PollEvent(&event)){
        switch(event.type){
        case SDL_QUIT:
            done = true;
            break;
        case SDL_KEYDOWN:
            switch(event.key.keysym.sym){
            case SDLK_ESCAPE:
                done = true;
                break;
            case SDLK_LEFT:
                animate_x = -5;
                cout << "left press\n";
                break;
            case SDLK_RIGHT:
                animate_x = 5;
                break;
            case SDLK_UP:
                animate_y = -5;
                break;
            case SDLK_DOWN:
                animate_y = 5;
                break;
            default:
                break;
            }
            break; -left out in original
        case SDL_KEYUP:
            switch(event.key.keysym.sym){
            case SDLK_LEFT:
                cout << "left up\n";
                animate_x = 0;
                break;
            case SDLK_RIGHT:
                animate_x = 0;
                break;
            case SDLK_UP:
                animate_y = 0;
                break;
            case SDLK_DOWN:
                animate_y = 0;
                break;
            default:
                break;
            }
            break; -left out in original
        }
    }");

在尝试弄清楚如何发布代码时,我注意到我在两种情况下遗漏了默认值。该代码现在可以工作了。它不断检查案例并执行与队列中的内容匹配的代码。傻我。感谢所有的帮助。 =)

最佳答案

您似乎启用了按键重复。要禁用它,请使用

SDL_EnableKeyRepeat(0, 0);

关于c++ - SDL_event KEYDOWN行为问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/327476/

相关文章:

c++ - 使用 C++ 引用参数在链表中分配新节点

math - 无法让我的对象指向鼠标

c++ - 为什么我将分配代码放在函数中时会得到 'insufficient buffer space'?

c++ - 0在纯虚函数中是什么意思

console - 使用多个文件制作 File 和 SDL

haskell - 在 Windows 上为 Haskell 安装 SDL (GHC)

c++ - SDL和OpenGL程序编译失败

c++ - SDL 在屏幕不起作用之前制作图像

C++ 取模除法

c++ - 如何在 C 中实现 C++ 虚函数