Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/144.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ SDL_WaitEvent:如何杀死队列中的所有东西?_C++_Sdl - Fatal编程技术网

C++ SDL_WaitEvent:如何杀死队列中的所有东西?

C++ SDL_WaitEvent:如何杀死队列中的所有东西?,c++,sdl,C++,Sdl,我在我的主循环中使用这个: if (SDL_WaitEvent(&event)) { switch (event.type) { case SDL_MOUSEBUTTONDOWN: mainClicker(event.button.x, event.button.y); break; ..... etc 一切正常,但: 在“屏幕1”中,用户进行填充并单击按钮。然后,该应用程序执行其操

我在我的主循环中使用这个:

if (SDL_WaitEvent(&event)) {
            switch (event.type) {
            case SDL_MOUSEBUTTONDOWN:
                mainClicker(event.button.x, event.button.y);
            break;
..... etc
一切正常,但:

在“屏幕1”中,用户进行填充并单击按钮。然后,该应用程序执行其操作,并显示一个带有其他按钮的结果屏幕。问题是,如果您在结果屏幕完全显示之前(2-5秒-使用SDL_延迟)意外单击鼠标按钮,鼠标按钮将被存储(缓存),然后立即在屏幕2中使用。所以,如果你够幸运的话,你甚至可以在屏幕显示之前点击一些screen2按钮

有没有一种方法可以清除SDL事件队列(不确定它实际上是如何调用的)


谢谢。

在处理事件以激活结果屏幕后,请在处理下一个事件之前调用此选项:

SDL_EventState(SDL_MOUSEBUTTONDOWN, SDL_IGNORE);
加载结果屏幕后,调用:

SDL_EventState(SDL_MOUSEBUTTONDOWN, SDL_ENABLE);

处理事件以激活结果屏幕后,在处理下一个事件之前调用此选项:

SDL_EventState(SDL_MOUSEBUTTONDOWN, SDL_IGNORE);
加载结果屏幕后,调用:

SDL_EventState(SDL_MOUSEBUTTONDOWN, SDL_ENABLE);