我正好打了我的精灵,但是我希望它能更慢地循环浏览文件,看起来更像爆炸。目前它的文件运行速度如此之快,以至于它不均匀
class Hit_animation(pygame.sprite.Sprite):
def __init__(self, enemy_x, enemy_y):
pygame.sprite.Sprite.__init__(self)
imageFiles = ["sprites/explosion{}.png".format(num) for num in range (1,5)]
for files in imageFiles:
self.image = pygame.image.load(files)
self.image.convert()
self.rect = self.image.get_rect()
self.rect.x = enemy_x
self.rect.y = enemy_y
self.dx = -1
def update(self, enemy_x, enemy_y):
self.rect.x += self.dx
我想实施某种形式的延迟。所有帮助将不胜感激
答案 0 :(得分:2)
我用self.counter
内置Explosion
来解决这个问题。我将所有相关图像存储在列表中,然后使用update()
调用来递增计数器。当计数器除以帧率'值向上移动一个整数,我移动显示图像的索引。当数字变得太大时,我知道精灵的使用已经用尽,所以我kill()
。
这样的事情:
class Explosion(pygame.sprite.Sprite):
def __init__(self, x, y):
#boilerplate code, loading images, just as you did, etc...
self.x = x
self.y = y
self.counter = 0
self.all_images = your_list_of_sprites
self.displayed_image = all_images[0]
def update(self):
self.counter += 1
next_frame = self.counter / someMagicInteger
if len(self.all_images) > next_frame:
self.displayed_image = self.all_images[next_frame]
else:
self.kill()
在此示例中,someMagicNumber
基本上是' fps' Explosion
,可以是你喜欢的任何东西。由于整数除以整数应始终在python2.7
中产生一个整数,这将导致它循环遍历帧,直到它达到超出存储图像的列表范围的数字。当发生这种情况时,它会调用self.kill()
因为它已明显超过其使用。