如何检测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.
我知道如何使用事件来检测鼠标按钮何时被按下,但是,如何检测鼠标按钮当前是否被按下?请注意,我不是在询问如何从事件中获取它。
除了 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.