Pygame 删除 class 中的所有对象
Pygame delete all objects in class
我目前正在做一个 pygame 项目,我想知道是否有一种简单的方法可以删除 class 中的所有精灵。我将所有精灵都放在一个名为 self.spritegroup 的组中,所以我不能只删除组中的所有对象。是否有删除 class 中所有对象的简单快捷方式?
像这样使用pygame.sprite.group
:
class MySprite(pygame.sprite.Sprite):
group = pygame.sprite.Group()
def __init__(self):
self.image = pygame.image.load('relative/path') # load image
self.rect = self.image.get_rect() # create rect
self.rect.topleft = pygame.mouse.get_pos() # set the location
pygame.sprite.Sprite.__init__(MySprite.group) # add to group
然后进行删除删除:
my_sprite = MySprite()
my_sprite.kill() # removes from group
del my_sprite # deletes object from memory (optional)
我想这取决于你是否考虑这个 "simple":
for sprite in group:
if isinstance(sprite, your_class):
sprite.kill()
如果你愿意,当然可以定义一个Group
的子类,将这个操作作为方法:
class MyGroup(pygame.sprite.Group):
def clear_by_class(self, cls):
for sprite in self:
if isinstance(sprite, cls):
sprite.kill()
好吧,您总是可以将新的组对象重新分配给您的旧组。
your_old_group = new_group
我不太确定,但似乎 kill 是为了删除特定的精灵。
我目前正在做一个 pygame 项目,我想知道是否有一种简单的方法可以删除 class 中的所有精灵。我将所有精灵都放在一个名为 self.spritegroup 的组中,所以我不能只删除组中的所有对象。是否有删除 class 中所有对象的简单快捷方式?
像这样使用pygame.sprite.group
:
class MySprite(pygame.sprite.Sprite):
group = pygame.sprite.Group()
def __init__(self):
self.image = pygame.image.load('relative/path') # load image
self.rect = self.image.get_rect() # create rect
self.rect.topleft = pygame.mouse.get_pos() # set the location
pygame.sprite.Sprite.__init__(MySprite.group) # add to group
然后进行删除删除:
my_sprite = MySprite()
my_sprite.kill() # removes from group
del my_sprite # deletes object from memory (optional)
我想这取决于你是否考虑这个 "simple":
for sprite in group:
if isinstance(sprite, your_class):
sprite.kill()
如果你愿意,当然可以定义一个Group
的子类,将这个操作作为方法:
class MyGroup(pygame.sprite.Group):
def clear_by_class(self, cls):
for sprite in self:
if isinstance(sprite, cls):
sprite.kill()
好吧,您总是可以将新的组对象重新分配给您的旧组。
your_old_group = new_group
我不太确定,但似乎 kill 是为了删除特定的精灵。