Przewodniki · 02

Timing, sprężyny i kompozycja

Wybierz sterownik, łącz kilka i wiedz dokładnie, co się dzieje, gdy któryś zostaje zatrzymany lub zastąpiony.

timing, spring i decay

timing podąża krzywą przez stały czas duration. spring podąża za fizyką i nie ma stałej długości. decay startuje z prędkością i zwalnia.

Te same sterowniki przyjmują liczbę, ValueXY lub rekord, więc { x, y, opacity } mogą poruszać się razem.

Przygotowywanie przykładu…

Parametry sprężyny

Użyj jednej parametryzacji. Bez żadnej dostajesz domyślną sprężynę React Native (tension 40, friction 7). velocity sprężyny domyślnie równa się prędkości toru, który przerywa.

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

Kompozycja

sequence uruchamia po kolei, parallel razem, stagger startuje każdy po opóźnieniu, delay czeka, a loop powtarza. Wynik to znowu kontroler, więc kompozycje się zagnieżdżają.

Przygotowywanie przykładu…

start, stop i reset

Każdy kontroler ma start(callback?), stop() i reset(). Callback dostaje { finished }: false, gdy ruch został zatrzymany lub zastąpiony.

Uruchomienie nowego sterownika na tej samej wartości zastępuje bieżący od aktualnej pozycji. Żadnego skoku do któregokolwiek końca.

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

Śledź inną wartość

Żywe toValue restartuje sterownik za każdym razem, gdy ta wartość się zmienia, jak tracking w React Native. follow(target, source) to to samo połączenie sprężynowe jako nazwana funkcja.

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 i klatki kluczowe

Easing odpowiada React Native: linear, quad, cubic, sin, circle, exp, elastic, back, bounce, bezier i pomocniki in, out, inOut. keyframes(value, frames, options) prowadzi jedną wartość przez kilka liczb z opcjonalnymi times i repeat.

Szukaj

Zacznij pisać, aby przeszukać dokumentację.