Escolha um driver, combine vários e saiba exatamente o que acontece quando um é parado ou substituído.
timing, spring e decay
timing segue uma curva por uma duration fixa. spring segue a física e não tem duração fixa. decay começa com uma velocidade e vai desacelerando.
Os mesmos drivers aceitam um número, um ValueXY ou um registro, então { x, y, opacity } podem se mover juntos.
Preparando o exemplo…
Parâmetros da mola
Use uma única forma de parametrizar. Sem nenhuma, você tem a mola padrão do React Native (tension 40, friction 7). A velocity de uma mola assume por padrão a velocidade da trajetória que ela interrompe.
sequence roda um depois do outro, parallel roda junto, stagger inicia cada um depois de um atraso, delay espera e loop repete. O resultado é de novo um controlador, então as composições se aninham.
Preparando o exemplo…
start, stop e reset
Todo controlador tem start(callback?), stop() e reset(). O callback recebe { finished }: false quando o movimento foi parado ou substituído.
Iniciar um novo driver no mesmo valor substitui o que está rodando a partir da posição atual. Não há salto para nenhuma das pontas.
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
Siga outro valor
Um toValue vivo reinicia o driver sempre que esse valor muda, como o tracking do React Native. follow(target, source) é a mesma conexão de mola como função nomeada.
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 e keyframes
Easing corresponde ao React Native: linear, quad, cubic, sin, circle, exp, elastic, back, bounce, bezier e os auxiliares in, out e inOut. keyframes(value, frames, options) leva um valor por vários números, com times e repeat opcionais.