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.
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.