Guides · 02

Timing, Federn und Komposition

Einen Driver wählen, mehrere kombinieren und genau wissen, was passiert, wenn einer gestoppt oder ersetzt wird.

timing, spring und decay

timing folgt einer Kurve über eine feste duration. spring folgt der Physik und hat keine feste Dauer. decay startet mit einer Geschwindigkeit und bremst ab.

Dieselben Driver akzeptieren eine Zahl, einen ValueXY oder einen Record, sodass { x, y, opacity } sich gemeinsam bewegen können.

Beispiel wird vorbereitet…

Federparameter

Nutze genau eine Parametrisierung. Ohne Angabe bekommst du die Standardfeder von React Native (tension 40, friction 7). Die velocity einer Feder übernimmt standardmäßig die Geschwindigkeit der Bahn, die sie unterbricht.

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

Kombinieren

sequence läuft nacheinander, parallel gleichzeitig, stagger startet jedes nach einer Verzögerung, delay wartet und loop wiederholt. Das Ergebnis ist wieder ein Controller, also lassen sich Kompositionen verschachteln.

Beispiel wird vorbereitet…

start, stop und reset

Jeder Controller hat start(callback?), stop() und reset(). Der Callback erhält { finished }: false, wenn die Bewegung gestoppt oder ersetzt wurde.

Ein neuer Driver auf demselben Wert ersetzt den laufenden ab der aktuellen Position. Es gibt keinen Sprung an eines der Enden.

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

Einem anderen Wert folgen

Ein lebendiger toValue startet den Driver neu, sobald sich dieser Wert ändert – wie Tracking in React Native. follow(target, source) ist dieselbe Federverbindung als benannte Funktion.

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 und Keyframes

Easing entspricht React Native: linear, quad, cubic, sin, circle, exp, elastic, back, bounce, bezier sowie die Helfer in, out und inOut. keyframes(value, frames, options) führt einen Wert durch mehrere Zahlen, mit optionalen times und repeat.

Suchen

Tippe, um die Dokumentation zu durchsuchen.