C++ SDL_PollEvent未拾取所有事件

C++ SDL_PollEvent未拾取所有事件,c++,sdl,C++,Sdl,我目前正在和SDL一起玩游戏,我遇到了一个问题,SDL没有接收到一些事件。举个例子,我会按“w”向前移动,同时,我会移动鼠标四处看看。但假设我按下“a”或“d”,SDL将不会拾取这些事件,或者即使我释放“w”,SDL也不会拾取KEYUP事件。我第一次在windows中编写这段代码,一切都很好,但在切换到ubuntu之后,它就不再像预期的那样工作了。这是我的主循环,我在其中轮询事件: while(Running) { while(SDL_PollEvent(&event))

我目前正在和SDL一起玩游戏,我遇到了一个问题,SDL没有接收到一些事件。举个例子,我会按“w”向前移动,同时,我会移动鼠标四处看看。但假设我按下“a”或“d”,SDL将不会拾取这些事件,或者即使我释放“w”,SDL也不会拾取KEYUP事件。我第一次在windows中编写这段代码,一切都很好,但在切换到ubuntu之后,它就不再像预期的那样工作了。这是我的主循环,我在其中轮询事件:

while(Running)
{
    while(SDL_PollEvent(&event))
        Events(&event);
    if( active ){
        Loop();
        Render();
    }
}
这是Events()中的代码:

keyStates['a']=true

这有一个
SDL\u GetKeyState
。使用它,而不是手动维护阵列

Uint8 keys[SDLK_LAST];
Uint8* sdlKeys = SDL_GetKeyState(0);
memcpy(keys, sdlKeys, sizeof(keys));


同时检查。

-1:首页的链接实际上不会引导OP在没有不必要信息的情况下找到问题的答案。当然,这会让他们阅读并最终得出答案,但有一大堆额外的东西无助于解决问题。@user2738698:Dude。检查问题和答案的日期。那么?它也不会帮助未来的人。大部分答案都很好,首页的链接不会帮助任何想解决问题的人。好吧,随你的便。不过,你不妨写下自己的答案。
Uint8 keys[SDLK_LAST];
Uint8* sdlKeys = SDL_GetKeyState(0);
memcpy(keys, sdlKeys, sizeof(keys));
bool keyPressed(SDLKey key){
    return keys[key] == SDL_PRESSED;
}