使用Pygame从自己的类方法中删除精灵是否安全?

时间:2013-06-18 08:31:16

标签: python pygame

我有一个派生的精灵对象,我想在满足特定条件时删除这个精灵。是否有任何问题从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()

1 个答案:

答案 0 :(得分:2)

如果你只想明确地删除精灵,这应该有效,但尝试删除对象时可能会出现两个问题,具体取决于你想要如何使用它。如果只从组中调用对象的函数,那么这将消除它。如果从类的特定实例调用函数,则会继续调用它。这就是为什么在这种情况下使用组有时会更好,即使只有一个成员,因为他们会为你处理所有这些。如果要删除类的实例,可以调用

self.__del__()

但这可能会导致一些问题,例如,当您尝试从该变量调用任何内容时,它现在将是未定义的。拥有组并使用kill()函数要好得多。如果您不想从所有组中删除精灵,则另一个可能的问题是粗略的。如果是这种情况,您可以从各个组中单独删除它。例如,如果它是渲染更新组,则可以执行以下操作:

<groupname>.remove(self)