Sprievodcovia · 02

Timing, pružiny a skladanie

Zvoľte driver, skladajte ich viac a vedzte presne, čo sa stane, keď sa jeden zastaví alebo nahradí.

timing, spring a decay

timing sleduje krivku počas pevného času duration. spring sa riadi fyzikou a nemá pevnú dĺžku. decay začne s rýchlosťou a spomaľuje.

Rovnaké drivery prijímajú číslo, ValueXY alebo záznam, takže { x, y, opacity } sa môžu pohybovať spolu.

Príprava príkladu…

Parametre pružiny

Použite jednu parametrizáciu. Bez nej dostanete predvolenú pružinu React Native (tension 40, friction 7). velocity pružiny je predvolene rýchlosť dráhy, ktorú preruš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

Skladanie

sequence spúšťa jeden po druhom, parallel spolu, stagger spúšťa každý po oneskorení, delay čaká a loop opakuje. Výsledok je opäť controller, takže skladby možno vnárať.

Príprava príkladu…

start, stop a reset

Každý controller má start(callback?), stop() a reset(). Callback dostane { finished }: false, keď bol pohyb zastavený alebo nahradený.

Spustenie nového drivera na tej istej hodnote nahradí bežiaci od aktuálnej polohy. Neskočí sa na žiadny z koncov.

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

Sledovanie inej hodnoty

Živá toValue reštartuje driver zakaždým, keď sa tá hodnota zmení, ako tracking v React Native. follow(target, source) je rovnaké pružinové prepojenie ako pomenovaná funkcia.

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 kľúčové snímky

Easing zodpovedá React Native: linear, quad, cubic, sin, circle, exp, elastic, back, bounce, bezier a pomocníci in, out, inOut. keyframes(value, frames, options) prevedie jednu hodnotu niekoľkými číslami s voliteľnými times a repeat.

Hľadať

Píšte a hľadajte v dokumentácii.