2

我有一个派生的精灵对象,我想在它满足特定条件时删除它。从 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()
4

1 回答 1

2

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

self.__del__()

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

<groupname>.remove(self)
于 2013-11-22T23:26:58.303 回答