Как починить анимацию появления картинки в pygame?
Я новичок в анимациях на питоне и решил впервые попробовать её.
Я хочу, чтобы эта анимация сначала была прозрачной, а потом она бы появлялась.
Но картинка появляется без анимации, что делать?
import pygame #type: ignore
pygame.init()
scr = pygame.display.set_mode((640, 480), pygame.OPENGL)
pygame.display.set_caption("Not Even a Game")
fade_speed = 4
faded_out = False
alpha = 0
menu_bg = pygame.image.load("images/menu.jpg")
menu_bg.set_alpha(alpha)
bgmt = menu_bg.get_rect(topleft=(0, 0))
def main_menu():
global alpha
global fade_speed
global faded_out
scr.fill((0, 0, 0))
while True:
for event in pygame.event.get():
if event.type == pygame.QUIT:
pygame.quit()
sys.exit()
menu_bg.set_alpha(alpha)
scr.blit(menu_bg, (0, 0))
if faded_out == False:
alpha += fade_speed
menu_bg.set_alpha(alpha)
if alpha >= 255: # Если прозрачность достигла 255, меняем флаг
faded_out = True
break
main_menu()
Ответы (1 шт):
Автор решения: S. Nick
→ Ссылка
Попробуйте так:
import sys
import pygame
pygame.init()
scr = pygame.display.set_mode((512, 512)) #, pygame.OPENGL)
pygame.display.set_caption("Not Even a Game")
fade_speed = 1 # 4
faded_out = False
alpha = 0
clock = pygame.time.Clock() # +
FPS = 15 # +
# vvvvvvvv тут ваше изображение
menu_bg = pygame.image.load("lena.jpg")
menu_bg.set_alpha(alpha)
bgmt = menu_bg.get_rect(topleft=(0, 0))
def main_menu():
global alpha, fade_speed, faded_out
while True:
scr.fill((0, 0, 0)) # +
for event in pygame.event.get():
if event.type == pygame.QUIT:
pygame.quit()
sys.exit()
# menu_bg.set_alpha(alpha)
scr.blit(menu_bg, (0, 0))
if not faded_out: # == False:
alpha += fade_speed
menu_bg.set_alpha(alpha)
# Если прозрачность достигла 255, меняем флаг
if alpha >= 255:
faded_out = True
#? break
pygame.display.update() # +
clock.tick(FPS) # +
main_menu()