【问题标题】:pygame: low fps causes difficulties to detect eventspygame:低 fps 导致难以检测事件
【发布时间】:2021-01-22 23:33:28
【问题描述】:

我正在做一个 pygame 项目,它应该只有 4 fps,这使它每 0.25 秒一帧。我的问题是,当您短暂单击某个键时,该事件可能不会被检测到,因为程序不会在整个 0.25 秒内检查事件,而是每 0.25 秒检查一次,这很容易错过一个事件.有没有办法在pygame中解决这个问题? (我正在使用clock.tick() 来设置fps)

【问题讨论】:

    标签: python pygame


    【解决方案1】:

    由于您没有向我们展示您的代码,因此我无法针对您的特定情况提供解决方案。不过

    我的问题是,当您短暂单击某个键时,可能无法检测到该事件

    不,那不是真的。检测到所有事件。 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()
    
    

    【讨论】:

      猜你喜欢
      • 2018-07-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多