Panduan · 02

Timing, pegas, dan komposisi

Pilih driver, gabungkan beberapa, dan ketahui persis apa yang terjadi saat satu berhenti atau diganti.

timing, spring, dan decay

timing mengikuti kurva selama duration yang tetap. spring mengikuti fisika dan tidak punya durasi tetap. decay dimulai dengan kecepatan lalu melambat.

Driver yang sama menerima angka, ValueXY, atau record, sehingga { x, y, opacity } bisa bergerak bersama.

Menyiapkan contoh…

Parameter pegas

Gunakan satu parameterisasi. Tanpanya Anda mendapat pegas bawaan React Native (tension 40, friction 7). velocity pegas secara bawaan adalah kecepatan gerak yang diinterupsinya.

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

Komposisi

sequence menjalankan satu per satu, parallel bersamaan, stagger memulai masing-masing setelah jeda, delay menunggu, dan loop mengulang. Hasilnya kembali berupa pengendali, jadi komposisi bisa disusun bersarang.

Menyiapkan contoh…

start, stop, dan reset

Setiap pengendali punya start(callback?), stop(), dan reset(). Callback menerima { finished }: false saat gerak dihentikan atau diganti.

Memulai driver baru pada nilai yang sama menggantikan yang sedang berjalan dari posisi saat ini. Tidak ada lompatan ke ujung mana pun.

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

Mengikuti nilai lain

toValue yang hidup memulai ulang driver setiap kali nilai itu berubah, seperti tracking di React Native. follow(target, source) adalah sambungan pegas yang sama sebagai fungsi bernama.

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 dan keyframe

Easing sesuai dengan React Native: linear, quad, cubic, sin, circle, exp, elastic, back, bounce, bezier, serta helper in, out, inOut. keyframes(value, frames, options) membawa satu nilai melewati beberapa angka dengan times dan repeat opsional.

Cari

Ketik untuk mencari dokumentasi.