为什么我的游戏延迟发生在我希望发生之前?

时间:2019-06-20 17:03:44

标签: python pygame delay pause

我正在pygame中创建一个游戏,我想在关卡末尾显示“关卡完成”文本。我想在文本变白之后创建一个延迟,以便将其显示几秒钟。但是,尽管代码行在文本变白之后,但在显示我的文本之前一直发生延迟。这是我的游戏的链接:

Swamp_Game

我尝试使用pygame.time.delay()函数,但是它使暂停发生在文本之前。

# lines 101-107 on main.py

screen.blit(field, field_rect)
core_text(screen, "Level Complete!", 100, 150, 200, BLACK)
pygame.time.delay(2000)
screen.blit(swamp, swamp_rect)
level_2() # function to initiate level 2
clock.tick(20)
pygame.display.flip()

我希望在文本显示后出现暂停,但是暂停总是在出现之前发生。结果,我的文字只显示了几分之一秒,然后才移到下一级,几乎看不到。

1 个答案:

答案 0 :(得分:1)

  

但是它使停顿发生在我的文字之前。

文本是在延迟之前绘制的,但是在显示屏上不可见。

当然,您必须在pygame.display.flip()之前通过pygame.display.update()pygame.time.delay()更新显示。
此外,您应该处理事件(例如pygame.event.pump())-一些系统需要事件处理才能进行显示更新。

pygame.display.flip()
pygame.event.pump()
pygame.time.delay(2000)
pygame.event.pump()