Aller au contenu

Exercice : Zombi

L'essentiel en 3 points

  1. Votre premier tween GSAP (une interpolation) : faire battre le coeur d'un zombi, et faire varier la couleur de fond de la page.
  2. Notions : gsap.to(), gsap.fromTo(), les propriétés scale et backgroundColor, les paramètres duration, repeat, yoyo et ease.
  3. Seul, environ 15 minutes. Gardez la page GSAP : tweens et timelines ouverte à côté.

Obtenir votre dépôt (5 min)

Accepter l'exercice dans Classroom 50

  1. Ouvrez le lien ci-dessus, connectez-vous avec Sign in with GitHub, puis acceptez l'exercice.
  2. Clonez votre dépôt et ouvrez-le dans VS Code.
  3. Ouvrez index.html avec Live Server.

Pas de npm install : GSAP est chargé par CDN, avec une balise <script> dans index.html, avant js/script.js. Comme dans votre récit.

Tout votre code va dans js/script.js. Ouvrez aussi index.html et repérez l'image du coeur : notez sa classe CSS, c'est la cible de l'animation.

Aperçu du résultat

Animation A : le coeur (5 min)

Un premier tween (interpolation)

  • Avec gsap.to(), animez le coeur : agrandissement à 1.2 fois sa taille (scale), en 0.6 seconde.
Ce que vous devriez voir

Le coeur grossit une seule fois, puis plus rien : un tween joue une seule fois par défaut.

La répétition

  • Ajoutez le paramètre repeat pour que l'animation se répète à l'infini.
Ce que vous devriez voir

Ça se répète, mais le coeur revient à sa taille d'origine d'un coup sec.

L'aller-retour

  • Ajoutez le paramètre yoyo : le coeur revient en douceur à sa taille d'origine.

Le lissage

  • Ouvrez le visualiseur d'eases de GSAP et essayez des lissages pour arriver au résultat de la vidéo. Ne regardez pas la réponse tout de suite!
Réponse

ease: "elastic.out(1, 0.3)"

  • Commit (Animation A : le coeur bat), puis push.

Animation B : le fond (5 min)

  • Sous l'animation du coeur, animez la couleur de fond du body avec gsap.fromTo() :
    • couleur de départ : #838B2F;
    • couleur d'arrivée : #BDAF88;
    • durée de 2.4 secondes;
    • répétition à l'infini, en aller-retour.
Indice : fromTo()

fromTo() reçoit deux objets : le départ, puis l'arrivée. Les paramètres (duration, repeat...) vont toujours dans le deuxième.

gsap.fromTo("cible",
  { /* valeurs de départ */ },
  { /* valeurs d'arrivée + paramètres */ }
);
  • Commit (Animation B : le fond change de couleur), puis push.

Défi du zombi (facultatif)

  • Ajoutez une légère rotation au coeur pendant qu'il bat : quelques degrés seulement.
  • Commit (Défi : le coeur tourne), puis push.

Pour remettre : un push sur main

Votre exercice est remis seulement quand vos commits sont poussés (push) sur la branche main de votre dépôt Classroom 50. Un commit qui reste sur votre poste, je ne le vois pas.

Je vois votre dépôt et vos commits dans Classroom 50.

L'exercice suivant : Magie

Exercice adapté, avec sa permission, de l'exercice du même nom du cours Web 3 (582-311), TIM Montmorency.