2

例如,如何仅检测 X 轴?

maus_x = 0
maus_y = 0
pygame.mouse.get_pos(maus_x, maus_y)

while not done:

    for event in pygame.event.get():

    if event.type == pygame.MOUSEMOTION:         
        if maus_x < wx_coord:
            angle += 10

理论上,这个“pygame.mouse.get_pos”返回一个元组(x,y)。但是,我在那里定义了一个变量来表示这个元组中的 x 和 y。问题是,当我移动鼠标(pygame.MOUSEMOTION)时,当我执行“maus_x < wx_coord:”中所写的操作时,它也会执行 Y 轴的功能。这根本没有意义。

只有当我在 x 轴上移动鼠标时,才必须执行“角度 +=10”。有人知道发生了什么吗?:)

4

1 回答 1

3

这不是函数调用的工作方式。在您的代码中,maus_xis always 0,因为没有任何东西可以修改它。你要:

while not done:
    for event in pygame.event.get():
        if event.type == pygame.MOUSEMOTION:      
            mousex, mousey = pygame.mouse.get_pos()   
            if mousex < wx_coord:
                angle += 10

事实上,您可能只想直接检查事件对象:

while not done:
    for event in pygame.event.get():
        if event.type == pygame.MOUSEMOTION:      
            mousex, mousey = event.pos   
            if mousex < wx_coord:
                angle += 10

或者更好:

while not done:
    for event in pygame.event.get():
        if event.type == pygame.MOUSEMOTION:      
            relx, rely = event.rel   
            if relx != 0:  # x movement
                angle += 10
于 2012-11-18T18:06:46.740 回答