■ La fonction LoadSprite pourrait avoir comme paramètre la taille d'un frame, le nombre de frames à prendre en compte ainsi qu'un paramètre indiquant à partir de quel frame commence le sprite.
LoadSprite(#Sprite, NomFichier, [Width, Height, frames, [framestart]])

Cette image est composé de 16 frames. La taille de chaque frame est de 64x64 pixels.
Le code de chargement de ce sprite serait :
LoadSprite(#Bird, "data/image/bird.png", 64, 64, 16)
■ Passons maintenant aux animations. Pure Basic utilise la fonction ClipSprite() pour changer la zone affichable du sprite par une nouvelle zone d'affichage. je trouve que c'est bien trop fastidieux à coder quand on a de nombreux sprites à gérer.
Une fonctionnalité sous cette forme serait bien plus plaisante.
LoadAnimation(#Animation, Frames.s, FrameSpeed, Loop=#True)
- Frames contient la séquence de frames à jouer.
- FrameSpeed le temps en ms
- Loop par défaut = #True pour une animation en boucle.
Exemple avec l'image de l'oiseau. Les deux premières lignes représente les animation gauche et droite de l'oiseau.
Le code de chargement des animations de ce sprite serait :
LoadAnimation(#BirdLeft, "0,1,2,3", 10)
LoadAnimation(#BirdRight", "4,5,6,7", 10)
Et pour finir, ajouter une fonctionnalité pour jouer l'animation.
SpriteAnimationPlay(#Sprite, #Animation) ou bien
AnimationPlay(#Animation)
Un autre point : Il est impossible d'utiliser des images avec canal alpha. je suis obligé de retravailler mes images pour définir une couleur de transparence et d'utiliser ensuite la fonctionnalité TransparentSpriteColor() pour définir la couleur de transparence. !