如何让PYGAME停止几秒钟?
问题描述
我知道这是一个简单的问题,我可以只使用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()
之前都没有运行该函数。
解决方案
仅当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
相关文章