Průvodci · 04
Vstup a gesta
Zapisujte ukazatel, tažení, posouvání a další vstup do hodnot a nechte jiné hodnoty, aby je následovaly.
input(target, adapter)
Adaptér vstupu převádí události prohlížeče na zápisy hodnot. input(ref, adapter) ho připojí jako controller; deklarovaný uvnitř useAnimated se odebere při odpojení nebo při změně závislosti.
Adaptéry: dragInput, pinchInput, moveInput, scrollInput, wheelInput, viewportInput, mediaInput, longPressInput a swipeInput.
Příprava příkladu…
Tažení s mezemi a pohybem po puštění
dragInput podporuje tažení ukazatelem i šipkami, bounds s odporem elastic, momentum po puštění a funkci settle, která vybere místo zastavení podle předpokládané polohy.
Na dotykových obrazovkách nastaví cíli touch-action, dokud je připojený, aby prohlížeč nepovažoval gesto za posouvání. Hodnota, kterou nastavíte sami, má přednost.
Příprava příkladu…
Sevření, viewport a média
Volitelný třetí argument input dostává každou událost reakce, takže adaptér může spouštět pohyb i na svých okrajích.
const card = useRef(null);
const pinch = useAnimated(
{ scale: 1, rotation: 0 },
(value) => {
input(card, pinchInput({ scale: value.scale, rotation: value.rotation, minScale: 0.5 }));
},
[],
);
const reveal = useAnimated(
0,
(value) => {
input(card, viewportInput({ once: true }), (event) => {
if (event.phase === 'in') spring(value, { toValue: 1 }).start();
});
},
[],
);Animated.event
Mapování událostí z React Native funguje na událostech DOM. U události posouvání se nativeEvent.contentOffset, contentSize a layoutMeasurement čtou z posouvaného prvku, takže mapování ScrollView se přenesou beze změny.
const scrollY = useAnimatedValue(0);
<div onScroll={Animated.event([{ nativeEvent: { contentOffset: { y: scrollY } } }])} />;