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