当我尝试在 SDL 2.0 中轮询 keydown 事件并按住某个键时,我会收到多个 keydown 事件,一个接一个。当我尝试使用 SDL 1.2.15 运行相同的程序时(由于 SDL 1.2.15 不支持 SDL_Window,因此略有改动),我没有这个问题。 keydown 事件只发生一次,就像它应该的那样。我什至尝试在另一台计算机上执行该程序,以确保它不是特定于计算机的问题。
相关代码如下:
#include <iostream>
#include <SDL.h>
using namespace std;
SDL_Event event;
SDL_Window* screen = NULL;
int main(int argc, char* args[])
{
if(SDL_Init(SDL_INIT_EVERYTHING) == -1)
{
cout << "ERROR INIT";
return 0;
}
screen = SDL_CreateWindow("My Game Window",
SDL_WINDOWPOS_UNDEFINED,
SDL_WINDOWPOS_UNDEFINED,
640, 480,
SDL_WINDOW_OPENGL);
bool quit = false;
while(!quit)
{
while(SDL_PollEvent(&event))
{
if(event.type == SDL_KEYDOWN)
{
cout << "KEY PRESSED!" << endl;
}
}
}
return 0;
}
最佳答案
忽略 SDL_KEYDOWN
事件,其中 event.key.repeat != 0
。
关于input - SDL 2.0 键盘输入问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20551447/