gpt4 book ai didi

c++ - SDL_WaitEvent : How to kill everything in queue?

转载 作者:太空宇宙 更新时间:2023-11-04 12:24:09 24 4
gpt4 key购买 nike

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

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 中使用。因此,如果您足够“幸运”,您甚至可以在某些 screen2 按钮显示之前单击它们。

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

谢谢。

最佳答案

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

SDL_EventState(SDL_MOUSEBUTTONDOWN, SDL_IGNORE);

结果屏幕加载后,调用:

SDL_EventState(SDL_MOUSEBUTTONDOWN, SDL_ENABLE);

关于c++ - SDL_WaitEvent : How to kill everything in queue?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3359922/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com