<p>您根本不需要<code>for</code>循环。您有一个应用程序循环,所以请使用它。<a href="https://www.pygame.org/docs/ref/time.html#pygame.time.get_ticks" rel="nofollow noreferrer">^{<cd3>}</a>可以检索自<code>pygame.init()</code>以来的毫秒数。见<a href="https://www.pygame.org/docs/ref/time.html" rel="nofollow noreferrer">^{<cd4>}</a>模块</p>
<pre class="lang-py prettyprint-override"><code>next_letter_time = 0
next_letter = 0
run = True
while run:
current_time = pygame.time.get_ticks()
# [...]
if next_letter < len(msg):
if current_time > next_letter_time:
next_letter_time = current_time + 7000 # 7000 milliseconds = 7
finalMessage = finalMessage + msg[next_letter]
next_letter += 1
renderMainText = mainText.render(finalMessage, True, white)
</code></pre>
<hr/>
<p>最简单的例子:</p>
<p><a href="https://i.stack.imgur.com/eHAAr.gif" rel="nofollow noreferrer"><img src="https://i.stack.imgur.com/eHAAr.gif" alt=""/></a></p>
<pre class="lang-py prettyprint-override"><code>import pygame
pygame.init()
window = pygame.display.set_mode((500, 500))
clock = pygame.time.Clock()
white = (255, 255, 255)
mainText = pygame.font.SysFont(None, 50)
renderMainText = None
finalMessage = ""
msg = "test text"
next_letter_time = 0
next_letter = 0
run = True
while run:
clock.tick(60)
for event in pygame.event.get():
if event.type == pygame.QUIT:
run = False
current_time = pygame.time.get_ticks()
if next_letter < len(msg):
if current_time > next_letter_time:
next_letter_time = current_time + 500
finalMessage = finalMessage + msg[next_letter]
next_letter += 1
renderMainText = mainText.render(finalMessage, True, white)
window.fill(0)
if renderMainText:
window.blit(renderMainText, (100, 100))
pygame.display.flip()
</code></pre>