当我使用blit函数时,直到我调用"display.fill(bgcolor)“函数时,它才会删除之前加载的sprite以使sprite移动。问题是我有一个五颜六色的背景。那么如何在不影响背景的情况下更新图像呢?注意--我已经试过"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))我卡了很长时间:(
发布于 2014-07-20 02:49:43
您将首先对背景进行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()希望这能有所帮助。
发布于 2014-07-20 02:50:23
Blit从不删除前一个元素-它不能-所有Blit元素创建一个位图。
你必须在所有循环中重新对所有元素进行blit。
或者你必须保留一部分背景在你blit sprite之前,然后用它来blit这一部分,以取代sprite来删除它。
您也可以使用带参数的pygame.display.update()来仅对背景的某些部分进行blit。
https://stackoverflow.com/questions/24843679
复制相似问题