Comment utiliser le paquet¶
Intégrer le paquet avec pygame¶
Importer le paquet¶
Après avoir importé pygame
, importez le paquet avec
import pygame_animations
Le nom est un peut long, alors il vaut mieux que vous l’importiez en tant que
import pygame_animations as anim
Appeler update_animation
¶
La seule chose nécéssaire pour que le paquet fonctionne, c’est d’appeler
anim.update_animations()
à chaque frame. Le mieux est de l’appeler juste avant de dessiner quoit que ce soit.
Créer des animations¶
Pour créer une animation, créez un objet pygame_animations.Animation
et appelez sa méthode start()
pour l’éxecuter.
Exemple : Déplacer un lutin¶
Le code suivant déplace le lutin monlutin
en x=200 en 2 secondes :
anim.Animation(monlutin, 2, rect__x=200).start()
monlutin
est l’objet à animer. Pour cet exemple, c’est un pygame.sprite.Sprite
mais vous pouvez cibler n’importe quel objet.
2
est la durée de l’animation, en secondes. Vous pouvez aussi passer un flottant, et la durée sera arrondie à la milliseconde.
rect__x=200
est la propriété à animer (ici monlutin.rect.x
).
Le __
remplace les .
pour viser les sous-propriétés, par exemple a.b.c
devient a__b__c
.
Vous pouvez animer autant de propriétes que vous voulez en même temps.
Synthèse : un « Hello World »¶
import pygame
import pygame_animations as anim
pygame.init()
surface = pygame.display.set_mode((640, 480))
font = pygame.font.SysFont('default', 52)
class MySprite (pygame.sprite.Sprite):
def __init__(self):
super().__init__()
self.image = font.render("Hello, World!", 1, (255, 255, 255))
self.rect = self.image.get_rect()
label = MySprite()
group = pygame.sprite.Group(label)
a = anim.Animation(label, 2, anim.Effects.cubic_in_out, rect__x=640-label.rect.w, rect__y=480-label.rect.h)
clock = pygame.time.Clock()
running = True
while running:
for ev in pygame.event.get():
if ev.type == pygame.QUIT:
running = False
t = pygame.time.get_ticks()
if t>3000 and a.can_run(): # l'animation démarre après 3s
a.start()
anim.update_animations()
surface.fill((0, 0, 0))
group.draw(surface)
pygame.display.flip()
clock.tick(30)
pygame.quit()