Ръководства · 02

Timing, пружини и композиция

Изберете драйвер, комбинирайте няколко и знайте точно какво става, когато един бъде спрян или заменен.

timing, spring и decay

timing следва крива за фиксирана duration. spring следва физиката и няма фиксирана дължина. decay започва със скорост и се забавя.

Същите драйвери приемат число, ValueXY или запис, така че { x, y, opacity } могат да се движат заедно.

Подготовка на примера…

Параметри на пружината

Използвайте една параметризация. Без нея получавате пружината по подразбиране на React Native (tension 40, friction 7). velocity на пружината по подразбиране е скоростта на траекторията, която прекъсва.

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

Композиция

sequence изпълнява едно след друго, parallel — заедно, stagger стартира всяко след закъснение, delay чака, а loop повтаря. Резултатът отново е контролер, така че композициите се влагат.

Подготовка на примера…

start, stop и reset

Всеки контролер има start(callback?), stop() и reset(). Callback получава { finished }: false, когато движението е спряно или заменено.

Стартирането на нов драйвер върху същата стойност заменя текущия от текущата позиция. Няма скок към нито един от краищата.

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

Следване на друга стойност

Жив toValue рестартира драйвера всеки път, когато тази стойност се промени, като tracking в React Native. follow(target, source) е същата пружинна връзка като именувана функция.

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 и ключови кадри

Easing съответства на React Native: linear, quad, cubic, sin, circle, exp, elastic, back, bounce, bezier и помощниците in, out, inOut. keyframes(value, frames, options) превежда една стойност през няколко числа с незадължителни times и repeat.

Търсене

Пишете, за да търсите в документацията.