Guías · 02

Timing, resortes y composición

Elige un driver, compón varios y sabe exactamente qué pasa cuando uno se detiene o se reemplaza.

timing, spring y decay

timing sigue una curva durante una duration fija. spring sigue la física y no tiene una duración fija. decay empieza con una velocidad y va frenando.

Los mismos drivers aceptan un número, un ValueXY o un registro, así que { x, y, opacity } pueden moverse juntos.

Preparando el ejemplo…

Parámetros del resorte

Usa una sola forma de parametrizar. Si no pones ninguna, obtienes el resorte por defecto de React Native (tension 40, friction 7). La velocity de un resorte toma por defecto la velocidad de la trayectoria que interrumpe.

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

Componer

sequence ejecuta uno tras otro, parallel a la vez, stagger arranca cada uno tras un retardo, delay espera y loop repite. El resultado vuelve a ser un controlador, así que las composiciones se anidan.

Preparando el ejemplo…

start, stop y reset

Cada controlador tiene start(callback?), stop() y reset(). El callback recibe { finished }: false cuando el movimiento se detuvo o se reemplazó.

Arrancar un driver nuevo sobre el mismo valor reemplaza al que está en marcha desde la posición actual. No hay salto a ninguno de los extremos.

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

Sigue otro valor

Un toValue vivo reinicia el driver cada vez que ese valor cambia, como el tracking de React Native. follow(target, source) es la misma conexión de resorte como función con nombre.

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 y keyframes

Easing coincide con React Native: linear, quad, cubic, sin, circle, exp, elastic, back, bounce, bezier y los ayudantes in, out e inOut. keyframes(value, frames, options) lleva un valor por varios números, con times y repeat opcionales.

Buscar

Escribe para buscar en la documentación.