我有一个派生的精灵对象,我想在满足特定条件时删除这个精灵。是否有任何问题从sprite类方法本身中以'pygame.sprite.Sprite.kill()'格式删除它?
class Pellet(pygame.sprite.Sprite):
def __init__(self, tank):
...
def update(self):
"""Update the position of bullets."""
self.rect.move_ip(self.xposc, self.yposc)
if offEdges(self.rect):
self.kill()
答案 0 :(得分:2)
如果你只想明确地删除精灵,这应该有效,但尝试删除对象时可能会出现两个问题,具体取决于你想要如何使用它。如果只从组中调用对象的函数,那么这将消除它。如果从类的特定实例调用函数,则会继续调用它。这就是为什么在这种情况下使用组有时会更好,即使只有一个成员,因为他们会为你处理所有这些。如果要删除类的实例,可以调用
self.__del__()
但这可能会导致一些问题,例如,当您尝试从该变量调用任何内容时,它现在将是未定义的。拥有组并使用kill()函数要好得多。如果您不想从所有组中删除精灵,则另一个可能的问题是粗略的。如果是这种情况,您可以从各个组中单独删除它。例如,如果它是渲染更新组,则可以执行以下操作:
<groupname>.remove(self)