![](/img/trans.png)
[英]How to remove an image from memory in pygame without using SpriteGroups?
[英]How do I draw part of the sprite image using pygame spritegroups?
我想画出精灵图像的一部分来慢慢显露出来。 如果我正在处理平局,我会这样做:
def draw(self, screen):
screen.blit(self.image, self.rect, self.viewport)
并在对象更新方法中更改视口大小。 我尝试将其添加到代码中,但它只显示了整个图像。 spritegroup update 方法肯定会调用更新,并且视口矩形正在正确更新,并且在游戏中我有:
self.all_sprites.draw(screen)
我将如何使用 pygame spritegroups 来实现这一点? 此外,没有一个精灵有绘制方法。
您可以使用 subsurface 方法定义直接链接到源表面的subsurface
:
subsurface(Rect) -> Surface
返回一个与其新父级共享其像素的新 Surface。 新 Surface 被视为原始 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
的image
和rect
属性来绘制对象。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.