温馨提示:本文翻译自stackoverflow.com,查看原文请点击:python - Making a Semi-Transparent Pause Background screen in Pygame
python python-3.x pygame

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

发布于 2020-03-29 13:09:59

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

这是“暂停屏幕”的调用位置:

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)

任何和所有帮助表示赞赏。

查看更多

查看更多

提问者
Kitso
被浏览
66
Hoog 2020-01-31 22:34

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

为您的暂停屏幕建立一个新的表面,将其填充为黑色,添加文本;然后使用类似的my_pause_surface.set_alpha(128)方法将整个表面变成50%透明,然后将其在游戏的其余部分上涂成透明色。

这是另一个问题中的一些有用信息:在pygame中绘制一个透明矩形