我是相当新的pygame的和香港专业教育学院打了我,我无法找到一个答案第一残端..
块传输文本,然后改变字符串相同的变量,游戏,而不是用新的替换原来的文本后,重叠的两个文本..?
我是相当新的pygame的和香港专业教育学院打了我,我无法找到一个答案第一残端..
块传输文本,然后改变字符串相同的变量,游戏,而不是用新的替换原来的文本后,重叠的两个文本..?
你必须先删除旧的文本。 通过创建曲面Font.render
是普通的表面。 一旦Surface
是块传送,其内容将成为目标表面的一部分,你必须控制目标表面抹去无论是从源表面的blit。
删除目的地表面的一种方法是的blit背景表面在其上。 背景表面为目标表面将是什么样子,而不喜欢它的文字或精灵什么。 另一种方法是用纯色填充面:
# pygame initialization goes here
screen = pygame.display.get_surface()
font = pygame.font.Font(None, 40)
font_surface = font.render("original", True, pygame.Color("white"));
screen.blit(surface, (0, 0))
screen.fill(pygame.Color("black")) # erases the entire screen surface
font_surface = font.render("edited", True, pygame.Color("white"));
screen.blit(surface, (0, 0))
可以有一个其他的解决办法,即使它没有太大的不同。 以前的答案将删除所有画面,但你可以删除只是你的文字。 如果这是写在图像上,你将取代只是一个形象的一部分,通过获取文本大小和块传输对应的图像部分(pygame.surface.subsurface功能)。 或者,如果不是的话,你可以填满屏幕的一部分。 在这种情况下,你只删除文本。
你也可以覆盖你的文字。
像这样:
label = myfont.render("Text", 0, (255,255,0))
screen.blit(label, (100, 100))
if x: //Parameter you check before overwrite
label = myfont.render("Text", 0, BACKGROUND_COLOR)
screen.blit(label, (100, 100))