Как починить анимацию появления картинки в 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()

введите сюда описание изображения

введите сюда описание изображения

→ Ссылка