首页 > 解决方案 > pygame.key.get_pressed() 和 event.type 有什么区别?

问题描述

这两段代码输出相同的东西。它们之间有什么区别,什么时候我们应该更喜欢使用其中一个而不是另一个?

   if event.type==pygame.KEYDOWN:
        if event.key==pygame.K_LEFT:
            xc=-4
        if event.key==pygame.K_RIGHT:
            xc=+4
        if event.key==pygame.K_UP:
            yc=-4
        if event.key==pygame.K_DOWN:
            yc=+4

    if event.type==pygame.KEYUP:
        if event.key==pygame.K_LEFT or event.key==pygame.K_RIGHT:
            xc=0
        if event.key == pygame.K_UP or event.key == pygame.K_DOWN:
            yc=0

        pressed=pygame.key.get_pressed()
    if pressed[pygame.K_LEFT]:
        xc=-4
    elif pressed[pygame.K_RIGHT]:
        xc=+4
    else:
        xc=0

    if pressed[pygame.K_UP]:
        yc=-4
    elif pressed[pygame.K_DOWN]:
        yc=+4
    else:
        yc=0

标签: pythonpygame

解决方案


pygame.KEYDOWN事件仅在第一次按下键时触发。您可以使用pygame.key.set_repeat()自定义此行为,以便在按下键时使其以固定速率触发,尽管您无法使用此方法使其与您的帧速率完全匹配。这通常应该用于文本输入,或者当第一次按下键时应该发生一次动作。

pressed只要按下该键,使用就会为真,而不管 的设置如何set_repeat。如果在按下键时每帧都应该发生某些事情,这通常使用。


推荐阅读