如何解决为什么我的方程式渲染一毫秒并消失
因此,我正在做一个项目,需要在特定的时间点将方程式渲染到屏幕上,而我做到了。但是我遇到了一个问题,其中方程式仅被渲染一毫秒,然后消失。我将问题追溯到'screen.fill((102,178,255))。当这段代码在主循环中时,方程式仅按我所说的..毫秒显示,如果该段代码在主循环之外,则问题得以解决,但是当您需要使用精灵时,就会出现其他问题移动。那么有没有办法通过在主循环中使用'screen.fill((102,178,255))'来解决这个问题呢?
从代码中删除eq_done变量将不起作用,因为我只希望呈现一个方程式,如果删除eq_done变量,则随机方程式将在pygame窗口中开始闪烁
谢谢!
import pygame
import random
pygame.init()
screen = pygame.display.set_mode((640,480))
clock = pygame.time.Clock()
done = False
equations = ['2 + 2','3 + 1','4 + 4','7 - 4']
font = pygame.font.SysFont("comicsansms",72)
tks = pygame.time.get_ticks()
cloud1 = pygame.image.load('cloud.png')
cloud1_X,cloud1_Y = 100,50
cloud1_Y_change = 0
def cloud1_display(x,y):
screen.blit(cloud1,(x,y))
def display_equation():
text = font.render(random.choice(list(equations)),True,(0,128,0))
screen.blit(text,(320 - text.get_width() // 2,240 - text.get_height() // 2))
rocket_up = False
eq_done = False
while not done:
screen.fill((102,178,255))
for event in pygame.event.get():
if event.type == pygame.QUIT:
done = True
if event.type == pygame.KEYDOWN and event.key == pygame.K_ESCAPE:
done = True
tks = pygame.time.get_ticks()
if tks > 5000 and not eq_done:
display_equation()
eq_done = True # only render once
cloud1_display(cloud1_X,cloud1_Y)
pygame.display.update()
clock.tick(60)
解决方法
您需要每帧重新绘制整个屏幕。
像画云一样画方程。
if pygame.time.get_ticks() > 5000:
display_equation()
,
如果要在一段时间内渲染方程式,则必须删除eq_done
,但是必须测试当前时间是否小于某个时间点。例如:
while not done:
# [...]
tks = pygame.time.get_ticks()
if 5000 < tks < 6000:
display_equation()
# [...]
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。