减慢范围功能

时间:2014-04-17 15:40:26

标签: python-2.7 pygame

我正好打了我的精灵,但是我希望它能更慢地循环浏览文件,看起来更像爆炸。目前它的文件运行速度如此之快,以至于它不均匀

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

我想实施某种形式的延迟。所有帮助将不胜感激

1 个答案:

答案 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()因为它已明显超过其使用。