我想知道是否有人可以帮助我解决我的问题。目前,我想在每次按下某个键时显示一个暂停屏幕,但是确实如此,结果屏幕始终是完全透明或不透明的,并且想知道是否可以通过任何方式调整以下代码为了实现那个梦想。
在这里称为“暂停屏幕”:
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)
任何帮助,我们将不胜感激。
答案 0 :(得分:1)
您应该将暂停屏幕建立为单独的表面。此命令:screen.fill(constants.BLACK)
,但几乎可以确保您永远不会获得50%的透明度(因为之前在屏幕上显示的所有内容都被涂上了黑色)。
为您的暂停屏幕新建一个表面,将其填充为黑色,添加文字;然后使用类似my_pause_surface.set_alpha(128)
之类的东西使整个表面透明50%,然后将其在游戏的其余部分顶部变白。
这是另一个问题中的一些有用信息:Draw a transparent rectangle in pygame