python pygame blit 函数
Posted
技术标签:
【中文标题】python pygame blit 函数【英文标题】:python pygame blit function 【发布时间】:2014-07-19 18:35:22 【问题描述】:当我使用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))
卡了很久:(
【问题讨论】:
【参考方案1】:您将首先对背景进行 blit,然后对正在移动的 sprite 的新位置进行 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()
希望这会有所帮助。
【讨论】:
谢谢,它有效..好奇有什么方法(语法)我们可以使用 rect 和填充颜色函数简单地绘制背景?【参考方案2】:Blit 从不删除前一个元素 - 它不能 - 所有 blitted 元素创建一个位图。
您必须在所有循环中再次对所有元素进行 blit。
或者你必须在你blit sprite之前保留部分背景,然后用它来blit这部分代替sprite来移除它。
您也可以使用 pygame.display.update()
和参数来仅对背景的某些部分进行 blit。
【讨论】:
以上是关于python pygame blit 函数的主要内容,如果未能解决你的问题,请参考以下文章
Python之Game笔记(3):pygame简单动画的实现