我想使用PanResponder获得可拖动的图像,它可以工作,但是当我触摸右侧(图像高度的矩形,从图像的右边缘到屏幕的右边缘)时,它也会不必要地起作用。这是一个问题,因为我想拥有多个可拖动组件。 图像从他的位置开始移动,相对于手指移动。
我尝试使用仿真器(Pixel_3_XL_API_29,最新的Android版本), 和平板电脑(V90_HD,Android 5.1.1)相同。
另外,这是一个国际象棋游戏,我本机反应新奇,是具有可拖动PanResponder部件组件的正确方法,还是可以/更好地拥有一个功能或一个不可见的PanResponder来移动所有部件? (无论如何,第一个问题仍然是,我想问题还是一样的)
以下是组件:
class DragTest extends React.Component {
constructor(props) {
super(props);
this.state = {
pan: new Animated.ValueXY()
};
}
componentWillMount() {
this._panResponder = PanResponder.create({
onMoveShouldSetResponderCapture: () => true,
onMoveShouldSetPanResponderCapture: () => true,
onPanResponderGrant: (e, gestureState) => {
this.state.pan.setOffset({x: this.state.pan.x._value, y: this.state.pan.y._value});
this.state.pan.setValue({x: 0, y: 0});
},
onPanResponderMove: Animated.event([
null, {dx: this.state.pan.x, dy: this.state.pan.y},
]),
onPanResponderRelease: (e, {vx, vy}) => {
this.state.pan.flattenOffset();
}
});
}
render() {
let { pan } = this.state;
let [translateX, translateY] = [pan.x, pan.y];
let imageStyle = {transform: [{translateX}, {translateY}]};
return (
<Animated.View style={imageStyle} {...this._panResponder.panHandlers}>
<Image source={require('./Image.png')} />
</Animated.View>
);
}
}
答案 0 :(得分:0)
我终于找到了
style={[imageStyle, {position: 'absolute'}]}