【发布时间】:2021-04-23 20:52:03
【问题描述】:
我从其他 StackOverflow 问题中找到了其中的一些代码,但基本上在我的代码中我运行 SDL_Delay 并且我不希望在此延迟期间注册任何鼠标事件,但它们仍然如此,所以我运行此代码:
SDL_FlushEvents(SDL_USEREVENT, SDL_LASTEVENT);
SDL_PollEvent( &event );
event.type = SDL_USEREVENT;
event.button.x = 0;
event.button.y = 0;
但即使在下一个 SDL_PollEvent(&event) 之后的这段代码之后,鼠标向上事件也会被注册。如何解决此问题并阻止这些鼠标事件被注册?
【问题讨论】:
-
SDL_FlushEvents 文档声明“此函数仅影响当前排队的事件。如果您想确保刷新所有挂起的操作系统事件,您可以在刷新之前立即在主线程上调用 SDL_PumpEvents()打电话。”
-
@keltar 我尝试在刷新调用之前添加 SDL_PumpEvents() 但它仍然不起作用。
-
您只清除用户事件类型的事件(在
SDL_USEREVENT和SDL_LASTEVENT之间)。鼠标事件类型较低,因此不会被清除。您可以使用SDL_FlushEvents(SDL_FIRSTEVENT, SDL_LASTEVENT)清除所有内容。 -
@keltar 就是这样,谢谢你的帮助,你能把它放在答案表格中以便我接受吗?
标签: mouseevent sdl sdl-2