我想显示一条消息两秒钟。
我现在正在使用的逻辑是在pygame.time.delay(2000)
之后使用pygame.display.flip
等待代码。
一个简短的例子:(我在我的代码上使用了这个翻转延迟很多)
write_gui("{0} has appeared".format(monster.name), BLUE, 24, TEXT_CORNER_X, TEXT_CORNER_Y)
pygame.display.flip()
pygame.time.delay(2000)
这确实有效,但它往往会“挂起”整个过程,所以当发生这种情况时,由于这个原因我会得到一些错误,主要是一些帧丢失,因为程序可以跟上睡眠清醒周期。
所以我现在想的是绘制相同的帧两秒钟。
那么你们建议我做什么?
因为我的一个答案是将每个翻转放在while循环中,所以必须有一个更好的线保守方法来解决这个问题。
答案 0 :(得分:0)
你的程序“挂起”因为你在睡觉时没有调用pygame.event.get()
,pygame.event.get()
让pygame处理它的内部事件。
最简单的解决方法是使用dt = clock.tick()
的返回值,在这种情况下,dt
将是您上次调用clock.tick()
后的时间,此值将以毫秒为单位。
然后,您可以使用该值来增加计数器显示消息的时间。
如果你愿意,你可以编写一个这样的函数并调用它等待多长时间:
def waitFor(waitTime): # waitTime in milliseconds
screenCopy = screen.copy()
waitCount = 0
while waitCount < waitTime:
dt = clock.tick(60) # 60 is your FPS here
waitCount += dt
pygame.event.pump() # Tells pygame to handle it's event, instead of pygame.event.get()
screen.blit(screenCopy, (0,0))
pygame.display.flip()
此功能将等待指定的时间并保持屏幕与呼叫前一样。