htmlcss.fr Des tutos ou tutoriels Wordpress, html, php ou javascript.

JS: jquery spriteMe

J

Il y a quelque année, j’ai écris un petit plugin jQuery pour gérer des animations de sprites. A l’origine ce plugin était un petit exercice personnel pour apprendre comment fonctionne le requestAnimationFrame en javaScript. Puis j’ai pu l’utiliser sur quelques projets. Le plugin fonctionne plutôt bien mais son utilisation est progressivement devenu obsolète dans la majorité des cas avec l’arrivée des animations en CSS. Le plugin offre néanmoins des possibilités sympathiques:

  • Gestion du nombre d’images par seconde
  • Jouer le sprite l’envers ou à l’endroit
  • Permet de boucler ou non
  • Sauter directement à l’image numero X
  • Play & Pause
  • Supporte le pixelratio pour les images retina

Concrètement il s’agit de changer la propriété « background-image » d’un élément HTML en utilisant requestAnimationFrame.  Voici une petite démo avec le lien de téléchargement:


 

Utilisation

Définir une div avec width et height plus un background-image. la div affichera donc la 1er frame du sprite.

#cheval{
  width: 288px;
  height: 254px;
  background-image: url(../images/cheval.jpg);
}
          

Puis ajoutez jQuery et le plugin spriteMe.

<script src="//code.jquery.com/jquery-1.11.2.min.js"></script>      
<script src="js/libs/jquery.spriteme.js" type="text/javascript"></script>   

Enfin, initialisez le plugin.

$(function() {   
  $("#cheval").spriteMe();
});

Ici la demo utilise les paramètres suivants:

//pour le css : width: 144px;height: 127px;
//et pour le JS
$("#cheval").spriteMe({
  loop:true,
  fps: 12,
  pixelratio: 2,
});

Options

Le plugin possède plusieurs options. Voici la liste avec les valeurs par défaut.
Remarque :Le plugin compte les images à partir de 0.

$(function() {  
  $("#cheval").spriteMe({
    fps: 12,
    loop: false,
    autoplay: true,
    gotoframe: false,
    reverse: false,
    maxframe: false, 
    pixelratio: 0,
    complete: function(){  
      console.log('This is the end.');
    }
});
  • fps: Le nombre d’image par seconde. INT
  • loop: L’animation doit-elle jouer en boucle? BOOLEAN
  • autoplay: Faut-il vraiment l’expliquer? BOOLEAN
  • gotoframe: Permet de sauter directement à une image. La première image est 0. INT
  • reverse: Joue l’animation à l’envers. BOOLEAN
  • maxframe: Défini l’image de fin de l’animation. Maxframe compte a partir de 0 (voir la fin de la page). Mettre sur FALSE pour désactiver. INT ou BOOLEAN
  • pixelratio: Défini si la taille du sprite est X fois plus grande que la taille du container ( Pour les device dont le pixelratio est supérieur à 1 )
  • complete: Exécute un bloc de code quand l’animation arrive à la fin ET que loop = false.

Méthodes | API

Les méthodes peuvent étre appellées pendant la lecture de l’animation, ou non.

//les deux méthodes ne sont pas identiques, play() est a utiliser après un stop(). Si loop = false et que l'animation est arrivée au bout; alors il faut utiliser resume().
  $("#cheval").spriteMe("play");
  $("#cheval").spriteMe("resume");
  
  // stop l'animation
  $("#cheval").spriteMe("stop");
  
  //relance l'animation depuis le debut
  $("#cheval").spriteMe("restart");
  
  //change les fps : INT
  $("#cheval").spriteMe("fps",30);
  
  //saute vers la frame : INT
  $("#cheval").spriteMe("gotoframe",30);

  // inverse le sens de lecture du sprite
  $("#cheval").spriteMe("reverse");

  // inverse le sens de lecture du sprite
  $("#cheval").spriteMe("setreversestate", false);

  // change le nombre de frame de l'animation INT
  $("#cheval").spriteMe("setmaxframe",42);

  // supprime la limitation de frame: BOOLEAN
  $("#cheval").spriteMe("setmaxframe",false);
  
  // change l'etat de la répétition automatique BOOLEAN
  $("#cheval").spriteMe("setloop",false);

Le fichier image

Le fichier image peut avoir une ou plusieurs colonnes, peut importe. le sprite sera affiché de gauche à droite, ligne par linge. Le plugin calcule seul les démentions de l’image et donc le nombre de frame total dans l’animation.

Ici, notre image peut contenir 15 frame. Mais notre animation n’en possède que 14. Il faut donc utiliser maxframe.
Attention: maxframe compte a partir de 0. Il faudra donc définir maxframe sur 13 et non pas 14.

htmlcss.fr Des tutos ou tutoriels Wordpress, html, php ou javascript.

François Riant

Je m’appelle François Riant. Je travail dans les métiers du web depuis 2006. Mon expérience m’a amené à changer plusieurs fois de technologie.

Aujourd’hui je cherche à partager mon expérience et j’y trouve du de plaisir. Je travail actuellement chez W2P Digital.
Je ne prends donc pas de mission en freelance.

Si vous avez une remarque ou une question; vous pouvez me joindre sur francois.riant@gmail.com