我一直在浏览SDL_Event
上的文档。有没有一种方法可以从事件队列之前中删除SDL_UserEvent
,它会被SDL_PollEvent
轮询?我曾尝试使用Google搜索“ sdl remove event
”,但想出了bubkis。
您可以先检查队列中的事件,然后再将其从队列中取出...然后决定将其取出。
两者都可以通过SDL_PeepEvents(http://wiki.libsdl.org/SDL_PeepEvents)完成。您可以通过传入SDL_PEEKEVENT作为参数操作来查看接下来的N个事件。或使用SDL_GETEVENT将其取出。
也应该将它们与SDL_GETEVENT一起使用;编辑获得的事件数组以删除要丢弃的事件;然后使用SDL_ADDEVENT再次调用以将其放回。
不过,在这一点上,我不得不怀疑您是否真的完成了想要的工作。为什么不只是轮询事件,而忽略要丢弃的类型的事件?我就是那样做的。
您可以看一下SDL_FlushEvent
或SDL_FlushEvent
。SDL_FlushEvents
可用于从队列中删除一种特定类型的事件,而SDL_FlushEvents
可以与值SDL_FlushEvent
和SDL_FlushEvents
一起使用,以便从队列中删除每个用户事件。
您可能以前想使用SDL_USEREVENT
,只是为了更新事件队列。
您也可以查看SDL_LASTEVENT
(SDL_PumpEvents
和SDL_PumpEvents
与SDL_PeepEvents
相同)。
我不知道一种简单的方法可以仅删除该类型的一个事件,但是您可以这样做:
SDL_PeepEvents
要删除队列中已经存在的所有未决用户事件。
minType