Guias · 02

Timing, molas e composição

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.

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

Combine

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.

Pesquisar

Digite para pesquisar na documentação.