内置的pygame函数:pygame.mouse.get_pos()
在移动鼠标时返回元组中的X和Y坐标,但是如果我停止移动鼠标,该函数将返回None
。
但是,我希望计算机一遍又一遍地返回当前坐标。
我该怎么做?
我要做的是编写一个函数,使获取鼠标坐标更容易。
我希望能够执行以下操作:
Xpos, Ypos = mouse_pos()
我现在拥有的是:
def mouse_pos():
for event in pygame.event.get():
pos = pygame.mouse.get_pos()
if pos != None:
x=a[0]
y=a[1]
return x, y
else:
#here I want code that says: if pos is NoneType, x=(latest x-value) and y=(latest y-value)
那么,即使鼠标静止不动,我如何才能使pygame不返回None(并返回当前坐标)?
谢谢!
答案 0 :(得分:2)
您使用的API错误,存在事件并不意味着它们都是鼠标事件,pygame
填充了鼠标事件的位置。
不应调用函数get_pos
来找出鼠标的位置,而应在更改鼠标时更新您的知识。
跟踪鼠标位置的正确方法是在主游戏循环中添加以下内容:
mouse_position = (0, 0) # initial value
while game_is_running: # your main game loop
for event in pygame.event.get():
if event.type == pygame.MOUSEMOTION:
mouse_position = pygame.mouse.get_pos()
答案 1 :(得分:2)
删除功能。只需使用pygame.mouse.get_pos()
。
返回pygame.mouse.get_pos()
的不是None
,而是您自己的函数。
仅在事件队列中有事件时才设置pos
。如果不是,则pos为None
。
但是更糟糕的是,每次调用mouse_pos
函数时,事件队列都会被清除。这将导致事件迷失。