SDL_WaitEvent:如何杀死队列中的所有内容?

时间:2010-07-29 06:22:13

标签: c++ sdl

我在我的主循环中使用它:

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

一切正常,但是:

在“屏幕1”中,用户执行操作并单击按钮。然后应用程序执行其操作并显示带有其他按钮的结果屏幕。问题是如果你在结果屏幕完全显示之前意外点击(2-5秒 - 使用SDL_Delay),MOUSEBUTTONDOWN有点存储(缓存),然后立即在屏幕2中使用。所以,如果你“幸运”,您甚至可以在显示之前单击某些屏幕按钮。

有没有办法清除SDL事件队列(不确定它是如何实际调用的)?

感谢。

1 个答案:

答案 0 :(得分:1)

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

SDL_EventState(SDL_MOUSEBUTTONDOWN, SDL_IGNORE);

结果屏幕加载后,请致电:

SDL_EventState(SDL_MOUSEBUTTONDOWN, SDL_ENABLE);