0

在 Pygame 中,我试图使用每个箭头键将图像在每个方向上平移 10%。现在我使用的代码只要按下键就会移动图像,我想要的是它只移动一次,无论键是否仍然被按下。

if event.type == KEYDOWN:
    if (event.key == K_RIGHT):
        DISPLAYSURF.fill((255,255,255)) #Clears the screen
        translation_x(100)
        draw(1)
    if (event.key == K_LEFT):
        DISPLAYSURF.fill((255,255,255)) #Clears the screen
        translation_x(-100)
        draw(2)
    if (event.key == K_UP):
        DISPLAYSURF.fill((255,255,255)) #Clears the screen
        translation_y(100)
        draw(3)
    if (event.key == K_DOWN):
        DISPLAYSURF.fill((255,255,255)) #Clears the screen
        translation_y(-100)
        draw(4)

除了使用 time.sleep 之外,还有更简单的方法来实现吗

4

1 回答 1

2

您可以使用pygame.key.set_repeat()禁用仍然关闭的键的重复事件。

但是,默认情况下应该禁用它:

启用键盘重复时,按住的键将生成多个 pygame.KEYDOWN 事件。延迟是发送第一个重复的 pygame.KEYDOWN 之前的毫秒数。之后,另一个 pygame.KEYDOWN 将每间隔毫秒发送一次。如果没有传递参数,则禁用键重复。

当 pygame 被初始化时,按键重复被禁用

于 2013-10-21T23:40:32.107 回答