在pygame中不处理任何位置

时间:2018-07-16 14:29:11

标签: python pygame

内置的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(并返回当前坐标)?

谢谢!

2 个答案:

答案 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函数时,事件队列都会被清除。这将导致事件迷失。