Python Forum
[pygame] transparent rects - Printable Version

+- Python Forum (https://python-forum.io)
+-- Forum: Python Coding (https://python-forum.io/forum-7.html)
+--- Forum: Game Development (https://python-forum.io/forum-11.html)
+--- Thread: [pygame] transparent rects (/thread-19004.html)



[pygame] transparent rects - SheeppOSU - Jun-10-2019

I made a block rectangle that is supposed to slowly go from 255 transparency to 0. I am having problems though. I don't understand this because I can slowly make it darken, but I can't get it to slowly lighten. Thanks in Advance. Here is the code -
For lightening it slowly. BTW - the indentations are weird because this is all inside a function.
#Presets
    interval = time.time()
    transparency = 255
    cover = pygame.Surface((500, 500), pygame.SRCALPHA)
    
    #Cover Screen
    while time.time() - interval < 10:
        for event in pygame.event.get():
            if event.type == pygame.QUIT:
                interval -= 10

        cover.fill((0, 0, 0, transparency))
        Screen.blit(cover, (0, 0))
        if transparency != 0:
            transparency -= 1
        time.sleep(0.05)
        pygame.display.update()
        Clock.tick(fps)
That code won't work, but this code for darkening the transparency does work.
#Presets
    interval = time.time()
    transparency = 0
    cover = pygame.Surface((500, 500), pygame.SRCALPHA)
    
    #Cover Screen
    while time.time() - interval < 10:
        for event in pygame.event.get():
            if event.type == pygame.QUIT:
                interval -= 10

        cover.fill((0, 0, 0, transparency))
        Screen.blit(cover, (0, 0))
        if transparency != 255:
            transparency += 1
        time.sleep(0.05)
        pygame.display.update()
        Clock.tick(fps)



RE: [pygame] transparent rects - Windspar - Jun-10-2019

Your code failed do to not clearing background first.
You need to clear background with a solid color then blits cover.
Lets also get ride of that time.sleep.
#Presets
    interval = 100 # 100 milliseconds = 0.1 seconds
    next_tick = interval + pygame.time.get_ticks()
    trans_direction = -1
    cover = pygame.Surface((500, 500), pygame.SRCALPHA)
    cover_color = pygame.Color('black')
     
    #Cover Screen
    running = True
    while running:
        for event in pygame.event.get():
            if event.type == pygame.QUIT:
                running = False
        
        ticks = pygame.time.get_ticks()
        if ticks > next_tick:
            next_tick += interval

            cover_color.a += trans_direction
            if cover_color.a < 1:
                trans_direction = 1
            if cover_color.a > 254:
                trans_direction = -1

            cover.fill(cover_color)

        # Need to clear screen.
        Screen.fill(pygame.Color('white'))
        Screen.blit(cover, (0, 0))

        pygame.display.update()
        Clock.tick(fps)



RE: [pygame] transparent rects - SheeppOSU - Jun-10-2019

Thanks, I don't quite understand it now, but I'll try to break it all down.