Vadovai · 02

Timing, spyruoklės ir kompozicija

Pasirinkite driver, sujunkite kelis ir tiksliai žinokite, kas nutinka, kai vienas sustoja ar yra pakeičiamas.

timing, spring ir decay

timing seka kreivę per fiksuotą duration. spring paklūsta fizikai ir neturi fiksuotos trukmės. decay pradeda nuo greičio ir lėtėja.

Tie patys driver priima skaičių, ValueXY arba įrašą, todėl { x, y, opacity } gali judėti kartu.

Ruošiamas pavyzdys…

Spyruoklės parametrai

Naudokite vieną parametrų rinkinį. Be jo gaunate numatytąją React Native spyruoklę (tension 40, friction 7). Spyruoklės velocity pagal numatymą yra pertraukiamo judesio greitis.

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

Kompozicija

sequence vykdo vieną po kito, parallel – kartu, stagger paleidžia kiekvieną po delsos, delay laukia, o loop kartoja. Rezultatas vėl yra valdiklis, todėl kompozicijas galima įdėti vieną į kitą.

Ruošiamas pavyzdys…

start, stop ir reset

Kiekvienas valdiklis turi start(callback?), stop() ir reset(). callback gauna { finished }: false, kai judesys buvo sustabdytas ar pakeistas.

Paleidus naują driver toje pačioje reikšmėje, veikiantis pakeičiamas nuo dabartinės padėties. Jokio šuolio į kurį nors galą.

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

Kitos reikšmės sekimas

Gyvas toValue iš naujo paleidžia driver kaskart, kai ta reikšmė pasikeičia, kaip tracking React Native. follow(target, source) yra tas pats spyruoklinis ryšys kaip pavadinta funkcija.

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 ir raktiniai kadrai

Easing atitinka React Native: linear, quad, cubic, sin, circle, exp, elastic, back, bounce, bezier ir pagalbinės in, out, inOut. keyframes(value, frames, options) praveda vieną reikšmę per kelis skaičius su neprivalomais times ir repeat.

Paieška

Rašykite, kad ieškotumėte dokumentacijoje.