每个pygame都有一个如下所示的游戏循环:
while running: for event in pygame.event.get(): if event.type == pygame.QUIT: running = False pygame.display.flip() print("tick " + str(pygame.time.get_ticks())) clock.tick(1)
根据api get_ticks()
:
返回自调用pygame.init()以来的毫秒数.在pygame初始化之前,这将始终为0.
但是clock.tick()
:
应该每帧调用一次此方法.它将计算多少.自上一次调用以来已经过了几毫秒.
如果传递可选的帧率参数,该函数将延迟以使游戏运行速度低于每秒给定的滴答数.这可以用于帮助限制游戏的运行时速度.通过每帧调用一次Clock.tick(40),程序将永远不会超过每秒40帧.
我有点困惑,这是否意味着clock.tick()
直接影响自游戏开始以来经过了多少毫秒?
所以clock.tick(40)
意味着我"发出"每秒40帧,而while循环每秒运行40次?
我没有看到fps和ticks之间的关系.
更新:我实际上只是测试了它,并且get_ticks()
仍然以mls返回实际时间,无论你给予什么fps tick() - 0.1
或者30
或者60
.
所以它似乎clock.tick()
只是设置了游戏应该运行的速度,以及循环应该自我更新的频率.
不过我还是有点困惑,欢迎其他答案.
FPS,每秒帧数,是每单位时间显示的帧数.
1/FPS是每帧之间应该经过的时间量.
Tick只是PyGame中时间的衡量标准.
clock.tick(40)
意味着每秒最多应该通过40帧.