Průvodci · 02

Timing, pružiny a skládání

Zvolte driver, skládejte jich víc a vězte přesně, co se stane, když se jeden zastaví nebo nahradí.

timing, spring a decay

timing sleduje křivku po pevnou dobu duration. spring se řídí fyzikou a nemá pevnou délku. decay začne s rychlostí a zpomaluje.

Stejné drivery přijímají číslo, ValueXY nebo záznam, takže { x, y, opacity } se mohou pohybovat společně.

Příprava příkladu…

Parametry pružiny

Použijte jednu parametrizaci. Bez ní dostanete výchozí pružinu React Native (tension 40, friction 7). velocity pružiny je ve výchozím stavu rychlost dráhy, kterou přerušuje.

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

Skládání

sequence spouští jeden po druhém, parallel společně, stagger spouští každý po zpoždění, delay čeká a loop opakuje. Výsledek je opět controller, takže skladby lze vnořovat.

Příprava příkladu…

start, stop a reset

Každý controller má start(callback?), stop() a reset(). Callback dostane { finished }: false, když byl pohyb zastaven nebo nahrazen.

Spuštění nového driveru na stejné hodnotě nahradí běžící od aktuální polohy. Neskočí se na žádný z konců.

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

Sledování jiné hodnoty

Živá toValue restartuje driver pokaždé, když se ta hodnota změní, jako tracking v React Native. follow(target, source) je stejné pružinové propojení jako pojmenovaná funkce.

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 a klíčové snímky

Easing odpovídá React Native: linear, quad, cubic, sin, circle, exp, elastic, back, bounce, bezier a pomocníci in, out, inOut. keyframes(value, frames, options) provede jednu hodnotu několika čísly s volitelnými times a repeat.

Hledat

Pište a hledejte v dokumentaci.