Guides · 02

Timing, ressorts et composition

Choisir un driver, en composer plusieurs, et savoir exactement ce qui se passe quand l’un est arrêté ou remplacé.

timing, spring et decay

timing suit une courbe pendant une duration fixe. spring suit la physique et n’a pas de durée fixe. decay démarre avec une vitesse et ralentit.

Les mêmes drivers acceptent un nombre, un ValueXY ou un enregistrement : { x, y, opacity } peuvent bouger ensemble.

Préparation de l’exemple…

Paramètres du ressort

Utilisez une seule paramétrisation. Sans aucune, vous obtenez le ressort par défaut de React Native (tension 40, friction 7). La velocity d’un ressort reprend par défaut la vitesse de la trajectoire qu’il interrompt.

springs.js
spring(value, { toValue: 1 }); // React Native default
spring(value, { toValue: 1, stiffness: 260, damping: 20 }); // physical
spring(value, { toValue: 1, bounciness: 8, speed: 12 }); // React Native style
spring(value, { toValue: 1, tension: 40, friction: 7 }); // origami style

Composer

sequence enchaîne, parallel exécute ensemble, stagger démarre chacun après un délai, delay attend et loop répète. Le résultat est encore un contrôleur : les compositions s’imbriquent.

Préparation de l’exemple…

start, stop et reset

Chaque contrôleur a start(callback?), stop() et reset(). Le callback reçoit { finished } : false quand le mouvement a été arrêté ou remplacé.

Démarrer un nouveau driver sur la même valeur remplace celui en cours depuis la position actuelle. Aucun saut vers l’une ou l’autre extrémité.

controller.js
const move = timing(value, { toValue: 1, duration: 600 });

move.start(({ finished }) => {
  // finished is false when stopped or replaced by a new animation
});
move.stop(); // keeps the value where it is on screen
move.reset(); // returns to where this animation started

Suivre une autre valeur

Un toValue vivant redémarre le driver chaque fois que cette valeur change, comme le tracking de React Native. follow(target, source) est la même connexion à ressort sous forme de fonction nommée.

tracking.js
// A live toValue tracks another value, like React Native tracking.
spring(badge, { toValue: pointer, stiffness: 300, damping: 26 }).start();

// follow() is the same connection as a named function.
follow(badge, pointer, { stiffness: 300, damping: 26 });

Easing et keyframes

Easing correspond à React Native : linear, quad, cubic, sin, circle, exp, elastic, back, bounce, bezier et les aides in, out et inOut. keyframes(value, frames, options) fait passer une valeur par plusieurs nombres, avec times et repeat facultatifs.

Rechercher

Tapez pour rechercher dans la documentation.