Hướng dẫn · 02

Timing, lò xo và phối hợp

Chọn driver, kết hợp vài cái, và biết chính xác điều gì xảy ra khi một cái dừng hoặc bị thay.

timing, spring và decay

timing đi theo một đường cong trong duration cố định. spring tuân theo vật lý và không có thời lượng cố định. decay bắt đầu với một vận tốc rồi chậm dần.

Cùng các driver nhận số, ValueXY hoặc bản ghi, nên { x, y, opacity } có thể chuyển động cùng nhau.

Đang chuẩn bị ví dụ…

Tham số lò xo

Dùng một bộ tham số. Không có, bạn nhận lò xo mặc định của React Native (tension 40, friction 7). velocity của lò xo mặc định là vận tốc của chuyển động mà nó ngắt.

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

Phối hợp

sequence chạy lần lượt, parallel chạy cùng lúc, stagger bắt đầu từng cái sau một độ trễ, delay chờ, còn loop lặp lại. Kết quả lại là một bộ điều khiển, nên có thể lồng các phối hợp.

Đang chuẩn bị ví dụ…

start, stop và reset

Mỗi bộ điều khiển có start(callback?), stop() và reset(). Callback nhận { finished }: false khi chuyển động bị dừng hoặc bị thay.

Khởi động driver mới trên cùng giá trị sẽ thay driver đang chạy ngay từ vị trí hiện tại. Không nhảy về đầu nào cả.

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

Bám theo giá trị khác

Một toValue sống sẽ khởi động lại driver mỗi khi giá trị đó thay đổi, như tracking trong React Native. follow(target, source) là cùng kiểu liên kết lò xo dưới dạng một hàm có tên.

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 và keyframe

Easing khớp với React Native: linear, quad, cubic, sin, circle, exp, elastic, back, bounce, bezier và các hàm hỗ trợ in, out, inOut. keyframes(value, frames, options) đưa một giá trị đi qua nhiều số với times và repeat tùy chọn.

Tìm kiếm

Gõ để tìm trong tài liệu.