SDL_QUIT не обнаружен в случае переключения с SDL_KEYDOWN и UP - PullRequest
0 голосов
/ 21 мая 2019

Я создаю игру, в которой нажатие клавиши вверх и вниз - это события.Пока эти события работают, событие SDL_QUIT, похоже, не обнаружено

Я пробовал операторы if / else.Если SDL_QUIT работает, то SDL_KEYUP и SDL_KEYDOWN не работают.

SDL_Event event;
if (SDL_PollEvent(&event)) {
    switch (event.type) {
        case SDL_QUIT: printf("Message never appears"); 
            break ;
        case SDL_KEYDOWN: p->test1(&event); 
            break ;
        case SDL_KEYUP:  p->test2(&event);
            break ;
    }
}

Когда я нажимаю крестик, чтобы закрыть окно, на моем экране ничего не появляется.Мне нужно Ctrl + C в терминале, чтобы увидеть сообщение появляется.Я хотел бы иметь возможность закрыть окно при обнаружении событий SDL_KEYUP и SDL_KEYDOWN.

1 Ответ

0 голосов
/ 29 мая 2019

вам нужно перебрать события до тех пор, пока больше не останется

SDL_Event event;
while (SDL_PollEvent(&event) != 0)
{
    switch (event.type) {
        case SDL_QUIT: 
            printf("Message never appears"); 
            break ;
        case SDL_KEYDOWN: 
            p->test1(&event); 
            break ;
        case SDL_KEYUP:  
            p->test2(&event);
            break ;
    }
}
...