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中获得键盘输入
  • 按下键时如何使精灵移动

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

无论set_repeat的设置如何,只要按下该键,使用pressed将为真。如果按键时每帧都发生一些事情,通常会使用此选项。

最新更新