如何使用pygame精灵组绘制精灵图像的一部分



我想画精灵图像的一部分,慢慢地显示出来。如果我在处理绘制,我只需要:

def draw(self, screen):
screen.blit(self.image, self.rect, self.viewport)

并且在对象更新方法中改变视口大小。我试着把它添加到代码中,但它只显示了整个图像。更新肯定是由spritegroup更新方法调用的,视口矩形也被正确更新,在游戏绘图中我有:

self.all_sprites.draw(screen)

如何使用pygame精灵组实现这一点?此外,没有一个精灵有绘制方法。

您可以使用方法subsurface:定义直接链接到源表面的子表面

subsurface(Rect) -> Surface

返回与新父曲面共享像素的新曲面。新曲面被视为原始曲面的子曲面。对任一曲面像素的修改将相互影响。

在构造函数中创建次表面一次,或在update方法中连续创建。例如:

class SpriteObject(pygame.sprite.Sprite):
def __init__(self, image):
# [...]
self.complete_image = image 

def update(self):
self.image = self.complete_image.subsurface(self.viewport)

现在您不再需要draw方法,可以使用self.all_sprites.draw(screen),因为image属性是整个图像的子表面。pygame.sprite.Group.draw()使用所包含的pygame.sprite.Sprites的imagerect属性来绘制对象。

最新更新