如何从事件队列中删除SDL_Event?

问题描述 投票:0回答:4

我一直在浏览SDL_Event上的文档。有没有一种方法可以从事件队列之前中删除SDL_UserEvent,它会被SDL_PollEvent轮询?我曾尝试使用Google搜索“ sdl remove event”,但想出了bubkis。

sdl-2
4个回答
1
投票

您可以先检查队列中的事件,然后再将其从队列中取出...然后决定将其取出。

两者都可以通过SDL_PeepEvents(http://wiki.libsdl.org/SDL_PeepEvents)完成。您可以通过传入SDL_PEEKEVENT作为参数操作来查看接下来的N个事件。或使用SDL_GETEVENT将其取出。

也应该将它们与SDL_GETEVENT一起使用;编辑获得的事件数组以删除要丢弃的事件;然后使用SDL_ADDEVENT再次调用以将其放回。

不过,在这一点上,我不得不怀疑您是否真的完成了想要的工作。为什么不只是轮询事件,而忽略要丢弃的类型的事件?我就是那样做的。


1
投票

您可以看一下SDL_FlushEventSDL_FlushEventSDL_FlushEvents可用于从队列中删除一种特定类型的事件,而SDL_FlushEvents可以与值SDL_FlushEventSDL_FlushEvents一起使用,以便从队列中删除每个用户事件。

您可能以前想使用SDL_USEREVENT,只是为了更新事件队列。

您也可以查看SDL_LASTEVENTSDL_PumpEventsSDL_PumpEventsSDL_PeepEvents相同)。


0
投票

我不知道一种简单的方法可以仅删除该类型的一个事件,但是您可以这样做:

SDL_PeepEvents

要删除队列中已经存在的所有未决用户事件。


0
投票

minType

© www.soinside.com 2019 - 2024. All rights reserved.