SDL 2.0 Повтор ключа и задержка
У меня проблема с клавиатурным вводом SDL 2.0 в понгоподобной игре. Когда я приказываю двигаться влево, нажимая стрелку влево, он обрабатывается SDL_PollEvents () и правильно реагирует, если клавиша была нажата один раз. Однако, если я удерживаю клавишу нажатой, я получаю небольшую задержку (до тех пор, пока задержка повторения клавиши Windows) перед непрерывным движением.
Вот функция обработки событий:
void Event::PlayerEvent (Player &player)
{
while (SDL_PollEvent (&mainEvent))
{
switch (mainEvent.type)
{
case SDL_KEYDOWN :
switch (mainEvent.key.keysym.sym)
{
case SDLK_ESCAPE :
gameRunning = false;
break;
case SDLK_LEFT :
player.moving = player.left;
break;
case SDLK_RIGHT :
player.moving = player.right;
}
break;
case SDL_QUIT :
gameRunning = false;
}
}
}
РЕДАКТИРОВАТЬ: В конце концов мне удалось исправить эту проблему, вызвав SystemParametersInfo (SPI_SETKEYBOARDDELAY, 0, 0, 0) в начале программы и SystemParametersInfo (SPI_SETKEYBOARDDELAY, 1, 0, 0) в конце, чтобы вернуться к повторению стандартного ключа задержка.