我想画精灵图像的一部分,慢慢地显示出来。如果我在处理绘制,我只需要:
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.Sprite
s的image
和rect
属性来绘制对象。