font_fade = pygame.USEREVENT + 1
pygame.time.set_timer(font_fade, 1)
if event.type == pygame.KEYDOWN:
click_to_start()
if event.type == font_fade:
text('press any button to start', (0, 0, 0), screen, screen.get_width() / 2, screen.get_height() - 70, 20)
我曾尝试使用 USEREVENT
,但它闪烁得太快,有时不起作用
答案 0 :(得分:0)
pygame.time.set_timer
的时间单位是毫秒。如果要定义 1 秒的间隔,则指定时间为 1000 毫秒:
pygame.time.set_timer(font_fade, 1)
pygame.time.set_timer(font_fade, 1000)
您需要在应用程序循环中绘制文本。如果你想要一个闪烁的文本,你必须绘制一次而不是一次绘制。
添加布尔变量 show_text
。事件发生时切换变量。根据变量绘制文本:
while True:
for event in pygame.event.get():
# [...]
if event.type == font_fade:
show_text = not show_text
# [...]
if show_text:
text('press any button to start', (0, 0, 0), screen, screen.get_width() / 2, screen.get_height() - 70, 20)
最小示例:
import pygame
pygame.init()
window = pygame.display.set_mode((500, 100))
clock = pygame.time.Clock()
font_fade = pygame.USEREVENT + 1
pygame.time.set_timer(font_fade, 200)
font = pygame.font.SysFont(None, 40)
text_surf = font.render('press any button to start', True, (255, 255, 0))
show_text = True
run = True
while run:
for event in pygame.event.get():
if event.type == pygame.QUIT:
run = False
if event.type == font_fade:
show_text = not show_text
window.fill(0)
if show_text:
window.blit(text_surf, text_surf.get_rect(center = window.get_rect().center))
pygame.display.flip()
clock.tick(60)
pygame.quit()
exit()