当您在屏幕上绘制透明表面时,该表面会与屏幕的当前内容混合。因此,您需要在绘制褪色背景之前清除屏幕screen.fill(0)
.
不要尝试以递归方式或在应用程序循环内使用循环来控制应用程序。不要delay
游戏。delay
导致游戏停止响应。
使用应用程序循环并使用pygame.time.Clock控制每秒帧数,从而控制游戏速度。
方法tick() of a pygame.time.Clock对象,以这种方式延迟游戏,即循环的每次迭代都消耗相同的时间段。看pygame.time.Clock.tick():
该方法应该每帧调用一次。
这意味着循环:
clock = pygame.time.Clock()
run = True
while run:
clock.tick(60)
Example:
import pygame
pygame.init()
screen = pygame.display.set_mode((400,300))
clock = pygame.time.Clock()
try:
image = pygame.image.load_extended('Map.png').convert_alpha()
image = pygame.transform.scale(image,(530,300))
except:
image = pygame.Surface(screen.get_size())
pygame.draw.circle(image, (255, 0, 0), screen.get_rect().center, min(*screen.get_size()) // 2 - 20)
alpha = 0
alpha_change = 1
run = True
while run:
clock.tick(60)
for event in pygame.event.get():
if event.type == pygame.QUIT:
run = False
alpha += alpha_change
if not 0 <= alpha <= 255:
alpha_change *= -1
alpha = max(0, min(alpha, 255))
screen.fill(0)
alpha_image = image.copy()
alpha_image.set_alpha(alpha)
screen.blit(alpha_image, (0, 0))
pygame.display.flip()
pygame.quit()
exit()