Python 在Pygame中,如何清除一个blit以替换另一个blit?
我正在制作一个游戏,在标题屏幕上,当我在坐标278365处悬停时按回车键时,我希望它显示新的背景(background1)。如何使其在这些坐标下按enter键时,删除当前背景并替换为新背景1Python 在Pygame中,如何清除一个blit以替换另一个blit?,python,pygame,Python,Pygame,我正在制作一个游戏,在标题屏幕上,当我在坐标278365处悬停时按回车键时,我希望它显示新的背景(background1)。如何使其在这些坐标下按enter键时,删除当前背景并替换为新背景1 screen=pygame.display.set_mode((1024,768),0,32) background=pygame.image.load(bif).convert() background1=pygame.image.load(wi1).convert() cursor=pygame.im
screen=pygame.display.set_mode((1024,768),0,32)
background=pygame.image.load(bif).convert()
background1=pygame.image.load(wi1).convert()
cursor=pygame.image.load(mif).convert_alpha()
x,y =278,365
while True:
for event in pygame.event.get():
if event.type == QUIT:
pygame.quit()
sys.exit()
if event.type == KEYDOWN:
if event.key == K_DOWN:
x=420
y=508
elif event.key == K_UP:
x=278
y=365
elif event.key == K_RETURN and x==420 and y==508:
pygame.quit()
sys.exit()
elif event.key == K_RETURN and x==278 and y==365:
screen.blit(background, (0,0))
screen.blit(cursor, (x,y))
pygame.display.update()
我没有时间测试它,但我希望它能工作:)您不需要删除旧背景;只需blit新的背景而不是旧的背景。你不能“清除”blit,你只能在适当的位置blit其他东西。你可以使用每个循环清除整个屏幕,使用,不带rect参数。然后画出你的新场景。这不包括屏幕上的所有图像吗?如果您有两个图像,并且只想移动其中一个,此解决方案是否仍然有效?此解决方案适用于此问题,但如果您有更多图像,则应首先blit背景,然后是所有其他图像。据我所知,你的图片的顺序很重要。
# your code
while True:
for event in pygame.event.get():
# more of your code
elif event.key == K_RETURN and x==420 and y==508:
pygame.quit()
sys.exit()
elif event.key == K_RETURN and x==278 and y==365:
#just blit the other image on top of it over it
screen.blit(background1, 0, 0)
else:
#no action performed for other background, set normal background
screen.blit(background, (0,0))
screen.blit(cursor, (x,y))
pygame.display.update()