【问题标题】:How do you make Pygame stop for a few seconds?你如何让 Pygame 停止几秒钟?
【发布时间】:2021-03-12 22:54:11
【问题描述】:

我知道这是一个简单的问题,我可以使用time 函数或其他东西,但这对我来说仍然是个问题。所以我有这个:

    letter = pygame.image.load('w00.png')
    screen.blit(letter, (letter_x, 625))
    letter_x += 30
    letter = pygame.image.load('e-2.png')
    screen.blit(letter, (letter_x, 625))
    letter_x += 30
    letter = pygame.image.load('l-2.png')
    screen.blit(letter, (letter_x, 625))
    letter_x += 30
    letter = pygame.image.load('c-2.png')
    screen.blit(letter, (letter_x, 625))
    letter_x += 30
    letter = pygame.image.load('o-2.png')
    screen.blit(letter, (letter_x, 625))
    letter_x += 30
    letter = pygame.image.load('m-2.png')
    screen.blit(letter, (letter_x, 625))
    letter_x += 30
    letter = pygame.image.load('e-2.png')
    screen.blit(letter, (letter_x, 625))

在我每次blit 字母之间(我试图让一个句子一个字母一个字母地写出来),我希望它在继续之前停止大约 0.5 秒。问题是,我尝试的一切都不是很好。

time.sleep() 函数和pygame.time.delay() 函数和pygame.time.wait() 函数都不起作用,因为出于某种原因,所有这些函数都在加载之前运行。这一切都在函数内部。 (def function():)

我知道这些函数会在加载任何内容之前运行,因为 1. 它运行 def function(): 与以前相同,并且 2. 加载所需的时间正好是我在 time.sleep() 中投入的时间。

谢谢。

编辑:

我已经尝试过了,显然它在运行 pygame.time.wait() 之前甚至没有运行该函数。

【问题讨论】:

标签: python time pygame sleep


【解决方案1】:

仅当pygame.display.update()pygame.display.flip() 出现时才会更新显示 叫做。此外,您必须通过pygame.event.pump() 处理事件,然后才能在窗口中看到显示的更新。

pygame.event.pump():

对于游戏的每一帧,您都需要对事件队列进行某种调用。这确保您的程序可以在内部与操作系统的其余部分进行交互。

如果您想显示文本并延迟游戏,那么您必须更新显示并处理事件。 见Why doesn't PyGame draw in the window before the delay or sleep?

无论如何,我建议预先加载图像并循环播放动画:

filenames = ['w00.png', 'e-2.png', 'l-2.png', 'c-2.png', 'o-2.png', 'm-2.png', 'e-2.png']
letters = [pygame.image.load(name) for name in filenames]
for letter in letters:
    pygame.event.pump()
    screen.blit(letter, (letter_x, 625))
    letter_x += 30
    pygame.display.flip()
    pygame.time.delay(500) # 500 milliseconds = 0.5 seconds

【讨论】:

  • 谢谢!!!它有一些问题,但不是什么大问题……我可以随时解决这些问题。
猜你喜欢
  • 2011-05-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-09-15
  • 1970-01-01
  • 2014-05-18
  • 1970-01-01
相关资源
最近更新 更多