イベントをリッスンする以外にマウスの位置を取得する方法をまったく理解していませんが、イベント キューが空の状況では、これはどのように達成されますか?
pygamers の pysdlのドキュメントでは、 sdl2.mouse.SDL_GetMouseState()
( doc here ) の使用が推奨されていますが、この関数には、実際には、質問したいカーソルの x、y 座標が必要です。一方、呼び出すとsdl2.mouse.SDL_GetCursor()
カーソル オブジェクトが返されますが、そこから座標を取得する方法が見つかりません (つまり、C オブジェクトをラップしているだけなので、.__dict__
属性が空です)。
私は考えられる限りのことを試してきましたが、これまで C でプログラミングしたことはありません。私が作成しようとしている単純なラッパー関数は次のとおりです。
def mouse_pos(self):
# ideally, just return <some.path.to.mouse_x_y>
event_queue = sdl2.SDL_PumpEvents()
state = sdl2.mouse.SDL_GetMouseState(None, None) # just returns 0, so I tried the next few lines
print state
for event in event_queue:
if event.type == sdl2.SDL_MOUSEMOTION:
# this works, except if the mouse hasn't moved yet, in which case it's none
return [event.x, event.y]