调用一组精灵的函数的两种方法的区别

时间:2016-11-29 02:40:15

标签: python pygame sprite

在Pygame中,我遇到了两种不同的方法来为精灵组中的所有精灵调用一个函数:

1)example_group.update()

2)for sprite_loop in example_group: sprite_loop.update()

除非我弄错了,否则他们都会做同样的事情。

两种方法之间是否存在显着差异?性能更好吗?我认为第一种方法会更快,但我读过的大多数示例代码都使用了第二种方法。

以下是将其置于上下文中的一些代码:

import pygame
class Test(pygame.sprite.Sprite):
     def __init__(self):
          super(Test, self).__init__()
          self.x = 0
          example_group.add(self)

     def update(self):
          self.x += 1
          if self.x == 1:
               print self.x

example_group = pygame.sprite.Group()

sprite1 = Test()
sprite2 = Test()
sprite3 = Test()

while True:

     #THIS IS WHERE MY QUESTION IS

     #DO I USE:
     example_group.update()

     #OR SHOULD I USE:
     for sprite_loop in example_group:
          sprite_loop.update()

1 个答案:

答案 0 :(得分:0)

他们也是如此。组更新函数调用Sprite更新。两者都应该具有同等效力。无论你打电话的是你的偏好。

您可以比较它们的文档

Sprite.update

Group.update

如果您不想在特定条件下更新所有精灵,则可以使用for循环