怎么让Pygame停几秒?
How do you make Pygame stop for a few seconds?
我知道这是一个简单的问题,我可以使用 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()
or pygame.display.flip()
叫做。此外,在显示更新在 window.
中可见之前,您必须通过 pygame.event.pump()
处理事件
For each frame of your game, you will need to make some sort of call to the event queue. This ensures your program can internally interact with the rest of the operating system.
如果您想显示文本并延迟游戏,则必须更新显示并处理事件。
参见 。
无论如何,我建议预先加载图像并循环播放动画:
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
我知道这是一个简单的问题,我可以使用 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()
or pygame.display.flip()
叫做。此外,在显示更新在 window.
pygame.event.pump()
处理事件
For each frame of your game, you will need to make some sort of call to the event queue. This ensures your program can internally interact with the rest of the operating system.
如果您想显示文本并延迟游戏,则必须更新显示并处理事件。
参见
无论如何,我建议预先加载图像并循环播放动画:
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