PyGame Timer不会以预期的速率发布事件

时间:2012-10-28 21:36:08

标签: python pygame

我正在使用pygame.time.set_timer(event,milliseconds)将2个USEREVENT添加到队列中; USEREVENT +每秒1(1000ms),每5ms USEREVENT。这应该意味着每获得一个USEREVENT + 1我就获得200个USEREVENT。我只收到100个活动。

似乎10ms是计时器可以拥有的最小延迟。我正在尝试使用它来控制我的FPS,并且USEREVENT + 1信号通过勾选“更新”游戏逻辑,但如果计时器具有10ms的较低上限,那么这意味着我不能高于100FPS。有谁知道为什么?

此外,对于奖励积分,毫秒必须是整数,这意味着我只能拥有1000的倍数的fps(例如10,20,25,50,100)。你怎么认为我用这种方法可以达到60fps?最初,我正在睡觉,直到下一帧的时间,但我希望它对CPU很好,所以我想要在嘀嗒声之间闲置。这就是我使用pygame.time.set_timer的原因,因为pygame.event.wait在队列中发生事件之前一直空闲。

1 个答案:

答案 0 :(得分:1)

要限制FPS,请使用:Clock.tick(fps_cap)

  

http://www.pygame.org/docs/ref/time.html#Clock.tick   应该每帧调用一次此方法。它将计算多少   自上次调用以来已经过了几毫秒。

     

如果传递可选的帧率参数,函数将延迟到   保持游戏运行速度低于每秒给定的滴答数。这个可以   用于帮助限制游戏的运行速度。通过电话   Clock.tick(40)每帧一次,程序永远不会超过   每秒40帧。

     

请注意,此函数使用SDL_Delay函数,该函数不准确   在每个平台上,但不使用太多的CPU。如果使用tick_busy_loop   你想要一个准确的计时器,不要介意咀嚼cpu。