Skip to main content
Tweeted twitter.com/#!/StackGameDev/status/470467363247124480
added 917 characters in body
Source Link
Straightfw
  • 175
  • 2
  • 8

So I wanted to make my menu fade in when the game starts and fade out when it quits. To do so, I created a second surface and planned to fill it with black and then gradually increase alpha. So in the constructor I added:

    self.fadeInSurface = pygame.display.set_mode(screen_size, flag)

In the main game method before the game loop starts:

self.fadeIn()

And the aforementioned fadeIn() looks like this:

def fadeIn(self):
    for i in range(100):   
        self.fadeInSurface.fill((0,0,0))
        self.fadeInSurface.set_alpha(i)
        self.clock.tick(30)
        pygame.display.flip()

But instead of a fade-in, all I get is solid black screen for a short time and then the menu appears without any eye candy whatsoever. What am I doing wrong?

EDIT: Thanks to @Heckel, I made something like this:

def fadeIn(self):
        for i in range(255):
            self.surface.blit(self.background, (0,0), None, BLEND_RGB_MAX)
            self.surface.blit(self.curStart, (100,200), None)
            self.surface.blit(self.curQuit, (400,350), None)
            self.fadeInSurface.fill((0,0,0))
            self.fadeInSurface.set_alpha(255-i)
            self.surface.blit(self.fadeInSurface, (0,0))
            self.clock.tick(30)
            pygame.display.flip()

so that I have the main surface (called surface) on which I project my buttons and background and a secondary surface (called fadeInSurface) which is solid black but its alpha changes. Running this code, however, still results in solid black screen for a few seconds and then a sudden change to full clarity of the whole menu :( Why is that so?

So I wanted to make my menu fade in when the game starts and fade out when it quits. To do so, I created a second surface and planned to fill it with black and then gradually increase alpha. So in the constructor I added:

    self.fadeInSurface = pygame.display.set_mode(screen_size, flag)

In the main game method before the game loop starts:

self.fadeIn()

And the aforementioned fadeIn() looks like this:

def fadeIn(self):
    for i in range(100):   
        self.fadeInSurface.fill((0,0,0))
        self.fadeInSurface.set_alpha(i)
        self.clock.tick(30)
        pygame.display.flip()

But instead of a fade-in, all I get is solid black screen for a short time and then the menu appears without any eye candy whatsoever. What am I doing wrong?

So I wanted to make my menu fade in when the game starts and fade out when it quits. To do so, I created a second surface and planned to fill it with black and then gradually increase alpha. So in the constructor I added:

    self.fadeInSurface = pygame.display.set_mode(screen_size, flag)

In the main game method before the game loop starts:

self.fadeIn()

And the aforementioned fadeIn() looks like this:

def fadeIn(self):
    for i in range(100):   
        self.fadeInSurface.fill((0,0,0))
        self.fadeInSurface.set_alpha(i)
        self.clock.tick(30)
        pygame.display.flip()

But instead of a fade-in, all I get is solid black screen for a short time and then the menu appears without any eye candy whatsoever. What am I doing wrong?

EDIT: Thanks to @Heckel, I made something like this:

def fadeIn(self):
        for i in range(255):
            self.surface.blit(self.background, (0,0), None, BLEND_RGB_MAX)
            self.surface.blit(self.curStart, (100,200), None)
            self.surface.blit(self.curQuit, (400,350), None)
            self.fadeInSurface.fill((0,0,0))
            self.fadeInSurface.set_alpha(255-i)
            self.surface.blit(self.fadeInSurface, (0,0))
            self.clock.tick(30)
            pygame.display.flip()

so that I have the main surface (called surface) on which I project my buttons and background and a secondary surface (called fadeInSurface) which is solid black but its alpha changes. Running this code, however, still results in solid black screen for a few seconds and then a sudden change to full clarity of the whole menu :( Why is that so?

Source Link
Straightfw
  • 175
  • 2
  • 8

Fade in screen in pyGame?

So I wanted to make my menu fade in when the game starts and fade out when it quits. To do so, I created a second surface and planned to fill it with black and then gradually increase alpha. So in the constructor I added:

    self.fadeInSurface = pygame.display.set_mode(screen_size, flag)

In the main game method before the game loop starts:

self.fadeIn()

And the aforementioned fadeIn() looks like this:

def fadeIn(self):
    for i in range(100):   
        self.fadeInSurface.fill((0,0,0))
        self.fadeInSurface.set_alpha(i)
        self.clock.tick(30)
        pygame.display.flip()

But instead of a fade-in, all I get is solid black screen for a short time and then the menu appears without any eye candy whatsoever. What am I doing wrong?