pygame.time.set\u计时器()事件重置?

2024-10-03 00:18:41 发布

您现在位置:Python中文网/ 问答频道 /正文

我有个小问题。。。你知道吗

是不是有一个关于pygame.time.set\u计时器()? 你知道吗

我已经让它运行正常,但问题是,我需要定时器复位回0每当一个特定的行动是执行。当它现在运行时,计时器将每秒触发movedownauto事件(无论发生什么),但我希望它在按键时重置,以便在按键触发movedownauto事件后等待一秒钟。 如果有什么东西可以放进事件类型==用户事件:节。你知道吗

以下示例↓

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()

谢谢!你知道吗


Tags: keyeventiftimetype事件pygame按键
1条回答
网友
1楼 · 发布于 2024-10-03 00:18:41

如果只想在按键后触发USEREVENT,请从顶部移除pygame.time.set_timer(USEREVENT, 1000)行,并在elif event.type == pygame.KEYDOWN:块中添加pygame.time.set_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)
    ...

相关问题 更多 >