在Pygame中制作半透明的暂停背景屏幕

时间:2020-01-31 09:17:03

标签: python python-3.x pygame

我想知道是否有人可以帮助我解决我的问题。目前,我想在每次按下某个键时显示一个暂停屏幕,但是确实如此,结果屏幕始终是完全透明或不透明的,并且想知道是否可以通过任何方式调整以下代码为了实现那个梦想。

在这里称为“暂停屏幕”:

if event.key == pygame.K_p:

                    notPaused = False
                    #print("Obtained")
                    pause = Pause(self.pauseScreen)
                    while notPaused == False:
                        #print("Received")

                        notPaused = pause.processEvents()
                        print(str(notPaused))
                        pause.displayFrame(self.pauseScreen)

                        clock = pygame.time.Clock()

                        clock.tick(60)

这是暂停屏幕显示自身的方式:

screen.fill(constants.BLACK)
        font = pygame.font.SysFont("serif", 25)

        for counter in range(1,5):

            text = font.render(self.options[counter-1], True, constants.WHITE)
            center_x = 150
            center_y = (counter * 120) - (text.get_height() // 2) + (self.pointer.image.get_height() // 2)
            screen.blit(text, [center_x, center_y])

        self.active_sprite_list.draw(screen)

        pygame.display.flip()

对于任何想知道的人,我有时都会尝试使用(0,0,0,125)的RGBA值将BLACK替换为ABLACK

最后,这是为暂停屏幕初始化屏幕的地方:

self.size = [constants.SCREEN_WIDTH, constants.SCREEN_HEIGHT]
self.pauseScreen = pygame.Surface(self.size,pygame.SRCALPHA,32)

任何帮助,我们将不胜感激。

1 个答案:

答案 0 :(得分:1)

您应该将暂停屏幕建立为单独的表面。此命令:screen.fill(constants.BLACK),但几乎可以确保您永远不会获得50%的透明度(因为之前在屏幕上显示的所有内容都被涂上了黑色)。

为您的暂停屏幕新建一个表面,将其填充为黑色,添加文字;然后使用类似my_pause_surface.set_alpha(128)之类的东西使整个表面透明​​50%,然后将其在游戏的其余部分顶部变白。

这是另一个问题中的一些有用信息:Draw a transparent rectangle in pygame

相关问题