pygame.sprite
带有基本游戏对象类的pygame模块
pygame.sprite.Sprite - 可见游戏对象的简单基类。
pygame.sprite.DirtySprite - 具有更多属性和功能的Sprite的子类。
pygame.sprite.Group - 用于保存和管理多个Sprite对象的容器类。
pygame.sprite.RenderPlain - 与pygame.sprite.Group相同
pygame.sprite.RenderClear - 与pygame.sprite.Group相同
pygame.sprite.RenderUpdates - 跟踪dirty更新的组子类
pygame.sprite.OrderedUpdates - RenderUpdates(渲染更新)按添加顺序绘制Sprite的子类。
pygame.sprite.LayeredUpdates - LayeredUpdates(分层更新)是一个精灵组,它处理图层并像OrderedUpdates(顺序更新)一样绘制。
pygame.sprite.LayeredDirty - LayeredDirty组用于DirtySprite对象。子类(分层更新)LayeredUpdates。
pygame.sprite.GroupSingle - 包含单个sprite的组容器。
pygame.sprite.spritecollide - 在与另一个精灵相交的组中查找精灵。
pygame.sprite.collide_rect - 使用rects检测两个精灵之间的碰撞。
pygame.sprite.collide_rect_ratio - 使用按比例缩放的rects检测两个精灵之间的碰撞。
pygame.sprite.collide_circle - 使用圆圈检测两个精灵之间的碰撞。
pygame.sprite.collide_circle_ratio - 使用按比例缩放的圆圈检测两个精灵之间的碰撞。
pygame.sprite.collide_mask - 使用蒙版在两个精灵之间进行碰撞检测。
pygame.sprite.groupcollide - 查找在两个组之间发生碰撞的所有精灵。
pygame.sprite.spritecollideany - 如果精灵与组中的任何内容相交,则进行简单测试。
该模块包含几个在游戏中使用的简单类。有一个主要的Sprite类和几个包含Sprite的Group类。使用pygame时,这些类的使用完全是可选的。这些类相当轻量级,只为大多数游戏常见的代码提供了一个起始点。
Sprite类旨在用作游戏中不同类型对象的基类。还有一个基本的Group类,它只存储sprite对象。游戏可以创建新类型的Group类,这些类在它们包含的特殊定制的Sprite实例上运行。
基本的Sprite类可以将它包含的Sprite对象绘制到Surface对象。 Group.draw()方法要求每个Sprite都有一个Surface.image属性和一个Surface.rect。 Group.clear()方法需要这些相同的属性,并可用于擦除所有具有背景的Sprite。还有更高级的组:pygame.sprite.RenderUpdates()和pygame.sprite.OrderedUpdates()。
最后,该模块包含多个碰撞功能。这些有助于在具有交叉边界矩形的多个组内查找精灵。要查找碰撞,Sprite对象必须分配Surface.rect属性。
这些组旨在高效地删除和添加Sprite对象。它们还允许进行简单的测试,以查看Sprite对象中是否已存在Group中。给定的Sprite可以存在于任意数量的组中。游戏可以使用一些组来控制对象渲染,以及一组完全独立的组来控制交互或玩家移动。不要将类型属性或bool添加到派生的Sprite类,而应考虑将Sprite保留在有组织的Group中。这将允许在游戏中稍后更加容易的查找。
Sprite和Groups使用add()和remove()方法管理它们之间的关系。对于它们的成员资格,这些方法可以接受单个或多个目标。这些类的默认初始值设定项还为初始成员资格采用单个或目标列表。从组中重复添加和删除相同的Sprite对象是安全的。
虽然可以不从下面的Sprite和AbstractGroup类派生设计sprite和group类,但强烈建议您在添加Sprite或Group类时扩展它们。
精灵不是线程安全的。因此,如果使用线程,请自行锁定。
pygame.sprite.Sprite
↶
可见游戏对象的简单基类。
Sprite(*groups) -> Sprite
pygame.sprite.Sprite.update - 控制精灵行为的方法
pygame.sprite.Sprite.add - 将精灵添加到组中
pygame.sprite.Sprite.remove - 从组中删除精灵
pygame.sprite.Sprite.kill - 从所有组中删除Sprite
pygame.sprite.Sprite.alive - 精灵属于任何组的检测
pygame.sprite.Sprite.groups - 包含此Sprite的组列表
可见游戏对象的基类。 派生类将要覆盖Sprite.update()并分配Sprite.image和Sprite.rect属性。 初始值设定项可以接受要添加的任意数量的Group实例。
在对Sprite进行子类化时,请务必在Sprite添加到Groups之前调用基本初始值设定项。 例如:
class Block(pygame.sprite.Sprite):
#构建函数 传入颜色和它的x、y坐标
def __init__(self, color, width, height):
#调用父类(Sprite)的构建函数
pygame.sprite.Sprite.__init__(self)
#创建一个图像,用某个颜色填充
#这也可以是从磁盘加载的图像
self.image = pygame.Surface([width, height])
self.image.fill(color)
#获取具有图像尺寸的矩形对象
#通过设置rect.x和rect.y的值来更新该对象的位置
self.rect = self.image.get_rect()
pygame.sprite.Sprite.update()
↶
控制精灵行为的方法
update(*args) -> None
此方法的默认实现不执行任何操作; 它只是一个方便的“钩子”,你可以覆盖。 Group.update()使用您提供的任何参数调用此方法。
如果没有在Group类中使用同名的方便方法,则无需使用此方法。
搜索pygame.sprite.Sprite.update的示例
pygame.sprite.Sprite.add()
↶
将精灵添加到组中
add(*groups) -> None
可以将任意数量的Group实例作为参数传递。 Sprite将被添加到它还不是其成员的组中。
搜索pygame.sprite.Sprite.add的示例
pygame.sprite.Sprite.remove()
↶
从组中删除精灵
remove(*groups) -> None
可以将任意数量的Group实例作为参数传递。 Sprite将从其当前所属的组中删除
搜索pygame.sprite.Sprite.remove的示例
pygame.sprite.Sprite.kill()
↶
从所有组中删除Sprite
kill() -> None
Sprite将从包含它的所有组中删除。 这不会改变关于Sprite状态的任何信息。 调用此方法后,可以继续使用Sprite,包括将其添加到Groups。
搜索pygame.sprite.Sprite.kill的示例
pygame.sprite.Sprite.alive()
↶
精灵属于任何组的检测
alive() -> bool
当Sprite属于一个或多个组时返回True。
搜索pygame.sprite.Sprite.alive的示例
pygame.sprite.Sprite.groups()
↶
包含此Sprite的组列表
groups() -> group_list
返回包含此Sprite的所有组的列表。