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 pygame blit。获取要显示的图像

Pygame Blitting错误

Python之Game笔记(3):pygame简单动画的实现

Pygame Blit 一次?

在Pygame中使用screen.blit时,我可以使用.format功能吗?

使用 pygame2.1 的 Blitting 文本无法正常工作