如何解决pygame:低 fps 导致难以检测事件
我正在做一个 pygame 项目,它应该只有 4 fps,这使得它每 0.25 秒一帧。我的问题是,当您短暂单击某个键时,可能无法检测到该事件,因为该程序不会在整个 0.25 秒内检查事件,而是每 0.25 秒检查一次,这使得它很容易错过某个事件. pygame有没有办法解决这个问题? (我使用clock.tick() 来设置fps)
解决方法
我无法针对您的特定情况提供解决方案,因为您没有向我们展示您的代码。不过
我的问题是,当您短暂单击某个键时,可能无法检测到该事件
不,那不是真的。检测到所有事件。 pygame.event.get()
返回自上次调用此函数以来发生的所有事件。见How to get keyboard input in pygame?。
您的游戏逻辑可能是错误的,您在 KEYDOWN
事件发生时设置了状态,但在 KEYUP
事件发生时停止。这将导致行为。
甚至可以比应用程序循环更频繁地运行事件循环。 以更高的帧速率运行应用程序循环和事件循环,但仅以 4 FPS 运行游戏。例如,以 40 FPS 的速度运行应用程序循环。使用帧计数器并在计数器达到 10 时运行游戏:
clock = pygame.time.Clock()
frame_count = 0
run = True
while run:
clock.tick(40)
for event in pygame.event.get():
if event.type == pygame.QUIT:
run = False
frame_count = (frame_count +1) % 10
if frame_count == 0:
# run game and do drawing
# [...]
pygame.display.flip()
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。