如何检测SDL2是否按住鼠标左键

How to detect if left mousebutton is being held down with SDL2

我知道如何使用事件来检测鼠标按钮何时被按下,但是,如何检测鼠标按钮当前是否被按下?请注意,我不是在询问如何从事件中获取它。

除了 SDL_GetMouseState(&x, &y); 之外,我没有尝试过任何其他方法,但似乎只有 return 鼠标的 X 和 Y 位置。

根据我的理解,状态机应该可以解决问题。 如果您检测到 MB Down 事件 (SDL_PRESSED),请设置一个变量来为您保存该信息,如果您检测到 MB Up 事件 (SDL_RELEASED),请重置该变量。 因此,读取此变量的内容将 return“按下”信息。

补充信息:根据您使用的鼠标,按钮状态可能会在高状态和低状态之间跳动。如果是这种情况,请添加一个小(~1ms)延迟。

因为我的机器上目前没有SDL2,所以我无法提供代码。 抱歉。

如果您因为他们修改了他们的 wiki 而找不到 SDL2 文档,这里是 link:https://wiki.libsdl.org/SDL_MouseButtonEvent

但如果这对您有帮助,请告诉我。

SDL_GetMouseState() returns 按下的按钮。示例:

if (SDL_GetMouseState(...) & SDL_BUTTON_LMASK)
    // Left button is pressed.