更新时间:2023-12-03 10:12:52
事件KEYDOWN
表示键的状态从UP变为DOWN"-并不意味着键一直处于按下状态"
Event KEYDOWN
means "key changed state from UP to DOWN" - it doesn't means "key is held pressed all time"
当您开始按下键时-会生成事件KEYDOWN
,而pygame.event.get()
返回的列表不会为空-并且for
循环可以执行if pygame.event.get()
When you start pressing key - it generate event KEYDOWN
and pygame.event.get()
returns not empty list - and for
loop can execute if pygame.event.get()
按住键时-它不会生成事件KEYDOWN
-并且pygame.event.get()
返回空列表-并且for
循环不会执行if pygame.event.get()
When you hold key pressed - it doesn't generate event KEYDOWN
- and pygame.event.get()
returns empty list - and for
loop doesn't execute if pygame.event.get()
您的代码应类似于
running = True
while running:
# check events
for event in pygame.event.get():
if event.type == KEYDOWN:
if event.key == pygame.K_q:
running = False
# do it outside of `for event` loop
# it is executed many times
if pygame.key.get_pressed()[pygame.K_a]:
print "Key is hold pressed..."
pygame.display.update()
或-当您只需要执行一次操作
or - when you need to execute something only once
key_A_pressed = False
running = True
while running:
# check events
for event in pygame.event.get():
if event.type == KEYDOWN:
if event.key == pygame.K_q:
running = False
elif event.key == pygame.K_a:
key_A_pressed = True
# it is executed only once
print "Key A - start pressing"
if event.type == KEYUP:
if event.key == pygame.K_a:
key_A_pressed = False
# it is executed only once
print "Key A - stop pressing"
# do it only once - outside of `for event` loop
# it is executed many times
#if pygame.key.get_pressed()[pygame.K_a]:
# or
if key_A_pressed:
print "Key A is held pressed..."
pygame.display.update()