SDL_KEYDOWN y el reconocimiento de clave no funciona correctamente
En mi proyecto, estoy teniendo problemas para que una simple instrucción de cambio funcione para la entrada SDL. Aquí está el ejemplo:
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;
}
}
Cuando ejecuto esto, primero parece que SDL_KEYDOWN no está siendo reconocido. Tampoco mis casos. Entonces cambié el código a:
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;
}
}
Esto hace que el caso predeterminado se ejecute cuando sostengo o presiono cualquier tecla, por lo que mi objeto se mueve de acuerdo con m_y + = 1. Si elimino el caso predeterminado e intento presionar w, a, s o d, no sucede nada. Si mantengo m_y + = 1, pero uso SDL_KEYDOWN en lugar de 771, no sucede nada. (Obtuve el código 771 imprimiendo el tipo de evento cada vez que se presiona una tecla).