微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

pygame.key.get_pressed() 和 event.type 有什么区别?

如何解决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

解决方法

键盘事件(参见 pygame.event 模块)仅在键的状态改变时发生一次。 KEYDOWN 事件在每次按下键时发生一次。 KEYUP 每次释放键时出现一次。将键盘事件用于单个操作或逐步移动。

pygame.key.get_pressed() 返回一个包含每个键状态的列表。如果某个键被按下,则该键的状态为 True,否则为 False。使用 pygame.key.get_pressed() 评估按钮的当前状态并获得连续移动。

另见:

,

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

无论 pressed 的设置如何,只要按下该键,就可以使用 set_repeat。这通常用于在按下键时每一帧都应该发生的事情。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。