在SDL_KEYDOWN和UP的切换情况下未检测到SDL_QUIT

时间:2019-05-20 22:33:32

标签: c++ events switch-statement sdl sdl-2

我正在创建一个游戏,其中按向上和向下键是事件。这些事件起作用时,似乎未检测到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 :(得分:0)

您需要遍历事件,直到没有剩余

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 ;
    }
}