2016-07-23 3 views
0

У меня 6 фотографий, которые я хочу сделать gif из них и показать его на Pygame. Я получаю, что я не могу просмотреть его так просто, так что я могу сделать, чтобы показать анимацию как gif?Как сделать gif на pygame?

Python 2.7

ответ

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() 
Смежные вопросы