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.)

Antworten auf die Frage(1)

Ihre Antwort auf die Frage