গাইড · 04
ইনপুট আর জেসচার
পয়েন্টার, টানা, স্ক্রল আর অন্য ইনপুট মানে লিখুন, আর অন্য মানগুলোকে তাদের পিছু নিতে দিন।
input(target, adapter)
ইনপুট অ্যাডাপ্টার ব্রাউজার ইভেন্টকে মানের লেখায় রূপ দেয়। input(ref, adapter) এটিকে কন্ট্রোলার হিসেবে জোড়ে; useAnimated-এর ভেতরে ঘোষিত হলে আনমাউন্টে বা নির্ভরতা বদলালে সরে যায়।
অ্যাডাপ্টার: dragInput, pinchInput, moveInput, scrollInput, wheelInput, viewportInput, mediaInput, longPressInput আর swipeInput।
উদাহরণ প্রস্তুত হচ্ছে…
সীমা আর ছেড়ে দেওয়ার পরের গতিসহ টানা
dragInput পয়েন্টার আর অ্যারো কি দিয়ে টানা, elastic প্রতিরোধসহ bounds, ছেড়ে দেওয়ার পরে momentum আর এমন একটি settle ফাংশন সমর্থন করে যা অনুমিত অবস্থান থেকে থামার জায়গা বাছে।
টাচ স্ক্রিনে মাউন্ট থাকাকালীন এটি লক্ষ্যের touch-action সেট করে, যাতে ব্রাউজার জেসচারকে স্ক্রল ভেবে নিয়ে না নেয়। আপনার নিজের সেট করা মান অগ্রাধিকার পায়।
উদাহরণ প্রস্তুত হচ্ছে…
পিঞ্চ, ভিউপোর্ট আর মিডিয়া
input-এর ঐচ্ছিক তৃতীয় আর্গুমেন্ট প্রতিটি response ইভেন্ট পায়, তাই অ্যাডাপ্টার নিজের প্রান্তে গতিও শুরু করতে পারে।
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
React Native-এর ইভেন্ট ম্যাপিং DOM ইভেন্টে কাজ করে। স্ক্রল ইভেন্টে nativeEvent.contentOffset, contentSize আর layoutMeasurement স্ক্রল হওয়া এলিমেন্ট থেকে পড়া হয়, তাই ScrollView ম্যাপিং অপরিবর্তিত চলে আসে।
const scrollY = useAnimatedValue(0);
<div onScroll={Animated.event([{ nativeEvent: { contentOffset: { y: scrollY } } }])} />;