SDL_KEYDOWN и распознавание ключа не работает должным образом
В моем проекте у меня возникли проблемы с получением простого оператора switch для работы для ввода SDL Вот пример:
SDL_Event event;
SDL_PollEvent(&event);
if (event.type == SDL_KEYDOWN)
{
switch (event.key.keysym.sym)
{
case SDLK_a: m_x -= 30;
break;
case SDLK_d: m_x += 30;
break;
case SDLK_w: m_y -= 30;
break;
case SDLK_s: m_y += 30;
break;
}
}
Когда я запускаю это, сначала кажется, что SDL_KEYDOWN не распознается. Не мои дела. Поэтому я переключил код на:
SDL_Event event;
SDL_PollEvent(&event);
if (event.type == 771)
{
switch (event.key.keysym.sym)
{
case SDLK_a: m_x -= 30;
break;
case SDLK_d: m_x += 30;
break;
case SDLK_w: m_y -= 30;
break;
case SDLK_s: m_y += 30;
break;
default: m_y += 1;
}
}
Это приводит к запуску случая по умолчанию, когда я удерживаю или нажимаю любую клавишу, поэтому мой объект перемещается в соответствии с m_y + = 1. Если я удаляю случай по умолчанию и пытаюсь нажать w, a, s или d, ничего не происходит. Если я сохраню m_y + = 1, но использую SDL_KEYDOWN вместо 771, ничего не произойдет. (Я получил код 771, печатая event.type при каждом нажатии клавиши).