Python Pygame 的 blit 函数
当我使用 blit
函数时,它不会删除之前加载的精灵,这导致精灵移动时会留下痕迹,直到我调用 "display.fill(bgcolor)" 函数。问题是我有一个多彩的背景。那么我该如何更新图像而不影响我的背景呢?
注意 - 我已经尝试过 "pygame.display.update()" 和 "pygame.display.flip()",但都没有用 :(
class states():
def __init__(self, goku1,goku2, x, y):
self.image=goku1
keys=pygame.key.get_pressed()
if keys[K_RIGHT]:
self.image=goku2
if keys[K_LEFT]:
self.image=goku2
while True:
pygame.display.flip()
pygame.display.update()
obj=states(goku1, goku2, x, y)
call=position()
DISPLAYSURF.blit(obj.image, (x, y))
我卡住很久了 :(
2 个回答
0
你首先要把背景画出来,然后再把正在移动的精灵画到新的位置。大概就是这样的:
window= pygame.display.set_mode(WINDOWSIZE, 0, 32)
while True:
#update events
window.blit(your_multi_colored_background, (0, 0))
window.blit(obj.image, (x, y))
pygame.display.update()
希望这对你有帮助。
0
Blit操作不会删除之前的元素——这是不可能的——所有被blit的元素都会合成一个位图。
你需要在每一轮循环中重新blit所有的元素。
或者,你可以在blit精灵之前先保存背景的一部分,然后在需要的时候用这部分背景来替换掉精灵,从而达到移除精灵的效果。
你还可以使用 pygame.display.update()
并传入参数,只更新背景的某些部分。