Gidsen · 02

Timing, veren en compositie

Kies een driver, combineer er meerdere en weet precies wat er gebeurt als er een wordt gestopt of vervangen.

timing, spring en decay

timing volgt een curve gedurende een vaste duration. spring volgt natuurkunde en heeft geen vaste lengte. decay begint met een snelheid en remt af.

Dezelfde drivers accepteren een getal, een ValueXY of een record, dus { x, y, opacity } kunnen samen bewegen.

Voorbeeld voorbereiden…

Veerparameters

Gebruik één parametrisering. Zonder krijg je de standaardveer van React Native (tension 40, friction 7). De velocity van een veer is standaard de snelheid van de baan die hij onderbreekt.

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

Combineren

sequence draait na elkaar, parallel tegelijk, stagger start elk na een vertraging, delay wacht en loop herhaalt. Het resultaat is weer een controller, dus composities kun je nesten.

Voorbeeld voorbereiden…

start, stop en reset

Elke controller heeft start(callback?), stop() en reset(). De callback krijgt { finished }: false als de beweging werd gestopt of vervangen.

Een nieuwe driver starten op dezelfde waarde vervangt de lopende vanaf de huidige positie. Er is geen sprong naar een van beide uiteinden.

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

Een andere waarde volgen

Een levende toValue start de driver opnieuw zodra die waarde verandert, zoals tracking in React Native. follow(target, source) is dezelfde veerverbinding als benoemde functie.

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 en keyframes

Easing komt overeen met React Native: linear, quad, cubic, sin, circle, exp, elastic, back, bounce, bezier en de helpers in, out, inOut. keyframes(value, frames, options) voert één waarde door meerdere getallen, met optionele times en repeat.

Zoeken

Typ om de documentatie te doorzoeken.