Python pygame.time.set_timer()事件重置?

Python pygame.time.set_timer()事件重置?,python,timer,pygame,Python,Timer,Pygame,我有个小问题 pygame.time.set_timer()是否有某种重置 我让它正常运行,但问题是每当执行某个操作时,我需要计时器重置回0。由于它现在正在运行,计时器将每秒触发movedownauto事件(无论发生什么情况),但我希望它在按下某个键时重置,以便在按下该键后等待一秒钟触发movedownauto事件。 如果可以将某些内容放入if event.type==USEREVENT:section,这将是理想的选择 下面的例子↓ pygame.time.set_timer(USEREVEN

我有个小问题

pygame.time.set_timer()是否有某种重置

我让它正常运行,但问题是每当执行某个操作时,我需要计时器重置回0。由于它现在正在运行,计时器将每秒触发movedownauto事件(无论发生什么情况),但我希望它在按下某个键时重置,以便在按下该键后等待一秒钟触发movedownauto事件。 如果可以将某些内容放入if event.type==USEREVENT:section,这将是理想的选择

下面的例子↓

pygame.time.set_timer(USEREVENT, 1000)

while True:

    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            done = True

        elif event.type == pygame.KEYDOWN:
        # Figure out if it was an arrow key. If so
        # adjust speed.
            if event.key == pygame.K_LEFT:
                x_speed = -40
            elif event.key == pygame.K_RIGHT:
                x_speed = 40
            elif event.key == pygame.K_DOWN:
                y_speed = 40

        # User let up on a key
        elif event.type == pygame.KEYUP:
        # If it is an arrow key, reset vector back to zero
            if event.key == pygame.K_LEFT or event.key == pygame.K_RIGHT:
                x_speed = 0
            elif event.key == event.key == pygame.K_DOWN:
                y_speed = 0
        # Move the object according to the speed vector.
        x_coord += x_speed
        y_coord += y_speed

        if event.type == USEREVENT:
            movedownauto(screen, x_coord, y_coord)
        else:
            drawcharacter(screen, x_coord, y_coord)



    clock.tick(tickspeed)
    pygame.display.flip()

谢谢

如果只想在按键后触发
USEREVENT
一次,请从顶部移除
pygame.time.set\u timer(USEREVENT,1000)
行,并在
elif event.type==pygame.KEYDOWN:
块中添加
pygame.time.set\u timer(USEREVENT,1000,True)

如果将
pygame.time.set_timer
的第三个参数设置为
True
,则事件将仅添加到事件队列一次(请注意,此功能仅在pygame版本2中可用)

如果您希望
USEREVENT
定期发生,并且如果发生
KEYDOWN
时只需“重置”计时器,只需移除计时器并再次添加

elif event.type == pygame.KEYDOWN:
    pygame.time.set_timer(USEREVENT, 0)
    pygame.time.set_timer(USEREVENT, 1000)
    ...

出于某种原因,计时器只接受两个参数,当我放入
pygame.time.set\u timer(USEREVENT,1000,True)
@abramiddell是的,对不起,第三个参数仅在较新的pygame版本中可用;您可能正在使用版本1.9。为什么pygame删除了Python3上的第三个参数?