我對影片和手勢處理程式很陌生。我正在閱讀官方 react native animations 中的檔案,我發現了這段代碼的一個片段,可以讓你在藍框周圍移動。
https://reactnative.dev/docs/animations
import React, { useRef } from "react";
import { Animated, View, StyleSheet, PanResponder, Text } from "react-native";
const App = () => {
const pan = useRef(new Animated.ValueXY()).current;
const panResponder = useRef(
PanResponder.create({
onMoveShouldSetPanResponder: () => true,
onPanResponderMove: Animated.event([
null,
{ dx: pan.x, dy: pan.y }
]),
onPanResponderRelease: () => {
Animated.spring(pan, { toValue: { x: 0, y: 0 } }).start();
}
})
).current;
return (
<View style={styles.container}>
<Text style={styles.titleText}>Drag & Release this box!</Text>
<Animated.View
style={{
transform: [{ translateX: pan.x }, { translateY: pan.y }]
}}
{...panResponder.panHandlers}
>
<View style={styles.box} />
</Animated.View>
</View>
);
}
const styles = StyleSheet.create({
container: {
flex: 1,
alignItems: "center",
justifyContent: "center"
},
titleText: {
fontSize: 14,
lineHeight: 24,
fontWeight: "bold"
},
box: {
height: 150,
width: 150,
backgroundColor: "blue",
borderRadius: 5
}
});
export default App;
但是,我想在 panresponder 移動時使用 console.log 或做一些計算,所以我嘗試修改我的 opPanResponderMove 但藍色框不再移動。我想知道為什么?
我修改的代碼:
onPanResponderMove: (event, gestureState) => {
console.log(event);
console.log(gestureState);
Animated.event([
null,
{ dx: pan.x, dy: pan.y }
])
},
uj5u.com熱心網友回復:
有關于您的問題,一個問題在這里
它說
原因是因為 Animation.event() 只生成從 onPanResponderMove 使用的函式,它還需要默認引數 evt、gestureState
這是修復:
onPanResponderMove: (event, gestureState) => {
console.log(event);
console.log(gestureState);
return Animated.event([
null,
{ dx: pan.x, dy: pan.y }
])(event,gestureState);
},
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/365466.html
上一篇:僅使用CSS延遲影片
