【发布时间】:2015-01-05 18:28:41
【问题描述】:
我需要制作一个精灵列表,每个精灵都应该有某种计时器,这样它就可以自己执行一个动作(例如每 10 秒拍摄一次)。但是它们将在不同的时间创建和添加新的,所以它们每个都应该有自己的计时器。 我知道如何制作精灵列表,但我不知道如何为每个精灵或类似的东西附加一个计时器。 有人可以帮我吗?
【问题讨论】:
我需要制作一个精灵列表,每个精灵都应该有某种计时器,这样它就可以自己执行一个动作(例如每 10 秒拍摄一次)。但是它们将在不同的时间创建和添加新的,所以它们每个都应该有自己的计时器。 我知道如何制作精灵列表,但我不知道如何为每个精灵或类似的东西附加一个计时器。 有人可以帮我吗?
【问题讨论】:
您可以将计时器添加为精灵的属性:
class Sprite:
def __init__(self, ...):
self.timer = pygame.Clock()
# ...
# ...
或者(确保没有成员已经调用timer):
for sprite in sprites:
sprite.timer = pygame.Clock()
或者您可以将列表更改为元组列表,其中包含一个精灵和一个计时器:
sprites = [(sprite, pygame.Clock()) for sprite in sprites]
这将创建一个格式如下的列表:
[(sprite, timer), (sprite, timer), ...]
然后您可以访问精灵和计时器:
sprite = sprites[0][0] # first sprite
timer = sprites[0][1] # first timer
或者:
sprite, timer = sprites[0] # first pair
您还可以有一个{sprite: timer} 的字典,然后使用sprite_to_timer[sprite] 访问一个精灵的计时器。
注意:将 pygame.Clock 替换为您想要使用的任何计时器
【讨论】: