我想知道是否有人可以帮助我解决我的问题。目前,我想在每次按下某个键时显示一个暂停屏幕,但是确实如此,结果屏幕始终是完全透明或不透明的,并且想知道是否可以通过任何方式调整以下代码为了使梦想成真。
这是“暂停屏幕”的调用位置:
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)
任何和所有帮助表示赞赏。
您应该将暂停屏幕建立为单独的表面。此命令:screen.fill(constants.BLACK)
几乎可以确保您永远不会获得50%的透明度(因为之前在屏幕上显示的所有内容都被涂成了黑色)。
为您的暂停屏幕建立一个新的表面,将其填充为黑色,添加文本;然后使用类似的my_pause_surface.set_alpha(128)
方法将整个表面变成50%透明,然后将其在游戏的其余部分上涂成透明色。
这是另一个问题中的一些有用信息:在pygame中绘制一个透明矩形
非常感谢您,屏幕现在可以按预期工作,但是指针出现错误,因此我将进行调查,然后在此处再次询问是否自己找不到解决方案。