我正在开发一个按空格键的游戏,但是很多时候,空格键并没有被注册。我有一个main
函数,我运行了一个while循环,在循环结束时,我有如下代码:
for event in pygame.event.get():
if event.type == pygame.KEYDOWN:
if event.key == pygame.K_SPACE:
(do this)
if event.type == pygame.QUIT:
pygame.quit()
quit()
break
else:
pass
(在此之前,我有几百行代码)
但我发现很多时候,当我按空格键的时候什么也没有发生,在游戏对空格键做出反应之前,需要进行大量的尝试(通常是7-10次)。我试着在pygame.display.update
之后删除time.sleep(0.05)
,这对我有一点帮助。我也尝试过让这个for循环更频繁地通过我的while循环运行,但在游戏对按键做出响应之前,仍然需要多次尝试。我做错了什么?
发布于 2020-09-02 05:08:40
...我还尝试让这个for循环更频繁地通过我的while循环运行……
不,不要那样做。pygame.event.get()
从队列中删除所有挂起的事件。如果您有多个事件循环,并且多次调用pygame.event.get()
,则只有一个循环会接收事件,所有其他循环都会错过这些事件。
每帧检索一次事件列表。然后,您可以多次查看该列表:
# application loop
while run:
# get the events
events = pygame.event.get()
# handel QUIT event
for event in events:
if evnet.type == pygame.QUIT:
run = false
# [...]
# handle some events
for event in events:
# [...]
# [...]
# handle some other events
for event in events:
# [...]
# [...]
https://stackoverflow.com/questions/63695342
复制相似问题