【问题标题】:How to make gif at pygame?如何在pygame制作gif?
【发布时间】:2016-11-27 08:17:42
【问题描述】:

我有 6 张照片,我想用它们制作 GIF 并在 Pygame 上展示它们。 我知道我不能简单地预览它,那么我可以做些什么来像 gif 一样显示动画?

Python 2.7

【问题讨论】:

    标签: python python-2.7 pygame gif


    【解决方案1】:

    您可以创建一个基于时间间隔在图像之间切换的类。

    class Animation(pygame.sprite.Sprite):
    
        def __init__(self, images, time_interval):
            super(Animation, self).__init__()
            self.images = images
            self.image = self.images[0]
            self.time_interval = time_interval
            self.index = 0
            self.timer = 0
    
        def update(self, seconds):
            self.timer += seconds
            if self.timer >= self.time_interval:
                self.image = self.images[self.index]
                self.index = (self.index + 1) % len(self.images)
                self.timer = 0
    

    我创建了一个小示例程序来尝试一下。

    import pygame
    import sys
    
    pygame.init()
    
    
    class Animation(pygame.sprite.Sprite):
    
        def __init__(self, images, time_interval):
            super(Animation, self).__init__()
            self.images = images
            self.image = self.images[0]
            self.time_interval = time_interval
            self.index = 0
            self.timer = 0
    
        def update(self, seconds):
            self.timer += seconds
            if self.timer >= self.time_interval:
                self.image = self.images[self.index]
                self.index = (self.index + 1) % len(self.images)
                self.timer = 0
    
    
    def create_images():
        images = []
        for i in xrange(6):
            image = pygame.Surface((256, 256))
            image.fill((255 - i * 50, 255, i * 50))
            images.append(image)
        return images
    
    
    def main():
        images = create_images()  # Or use a list of your own images.
        a = Animation(images, 0.25)
    
        # Main loop.
        while True:
            seconds = clock.tick(FPS) / 1000.0  # 'seconds' is the amount of seconds each loop takes.
    
            for event in pygame.event.get():
                if event.type == pygame.QUIT:
                    sys.exit()
    
            a.update(seconds)
            screen.fill((0, 0, 0))
            screen.blit(a.image, (250, 100))
            pygame.display.update()
    
    
    if __name__ == '__main__':
        screen = pygame.display.set_mode((720, 480))
        clock = pygame.time.Clock()
        FPS = 60
        main()
    

    【讨论】:

      猜你喜欢
      • 2021-01-18
      • 2021-05-12
      • 1970-01-01
      • 2012-04-27
      • 2017-04-08
      • 1970-01-01
      • 2018-04-29
      • 2022-10-05
      • 2013-02-04
      相关资源
      最近更新 更多