python pygame blit函数

时间:2014-07-19 18:35:22

标签: python pygame sprite 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 :(得分:0)

您首先会对背景进行blit,然后为正在移动的精灵blit新位置。它看起来像这样:

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()

希望这有帮助。

答案 1 :(得分:0)

Blit从不删除前一个元素 - 它不能 - 所有blitted元素都会创建一个位图。

你必须在所有循环中再次blit所有元素。

或者你必须在blit sprite之前保留背景的一部分并稍后使用它来代替sprite来删除它。

你也可以使用pygame.display.update()参数来仅blit背景的某些部分。