SDL_KEYDOWN und Schlüsselerkennung funktionieren nicht richtig
In meinem Projekt habe ich Probleme, eine einfache switch-Anweisung für die SDL-Eingabe zu erhalten. Hier ist das Beispiel:
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;
}
}
Wenn ich das ausführe, wird SDL_KEYDOWN anscheinend nicht erkannt. Meine Fälle auch nicht. Also habe ich den Code umgestellt auf:
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;
}
}
Dies bewirkt, dass der Standardfall ausgeführt wird, wenn ich eine Taste gedrückt halte oder drücke, sodass sich mein Objekt entsprechend m_y + = 1 bewegt. Wenn ich den Standardfall entferne und versuche, w, a, s oder d zu drücken, geschieht nichts. Wenn ich m_y + = 1 behalte, aber SDL_KEYDOWN anstelle von 771 verwende, passiert nichts. (Ich habe den 771-Code erhalten, indem ich den event.type ausgedruckt habe, wenn eine Taste gedrückt wurde.)