我在我的主循环中使用它:
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事件队列(不确定它是如何实际调用的)?
感谢。
答案 0 :(得分:1)
在处理事件以激活结果屏幕后,请在处理下一个事件之前调用此事件:
SDL_EventState(SDL_MOUSEBUTTONDOWN, SDL_IGNORE);
结果屏幕加载后,请致电:
SDL_EventState(SDL_MOUSEBUTTONDOWN, SDL_ENABLE);