我正在使用React Native中的PanResponder,并且正在考虑我点击Animated.View
并拖动它的情况。我有以下代码:
this.panResponder = PanResponder.create({
onStartShouldSetPanResponder: () => true,
onMoveShouldSetPanResponder: () => true,
onPanResponderGrant: () => {
this.animatedValue.setOffset({
x: this._value.x,
y: this._value.y,
})
this.animatedValue.setValue({ x: 0, y: 0})
},
onPanResponderMove: Animated.event([
null,
{
dx: this.animatedValue.x,
dy: this.animatedValue.y
}
])
})
我的问题是:
1)如果我点击PanResponder附加的Animated.View
,我知道onStartShouldSetPanResponder: () => true
导致Animated.View
成为这个手势的响应者,但是onMoveShouldSetPanResponder: () => true
导致它在每个后续的拖动手势增量上“重新成为”响应者?
2)onPanResponderGrant()
只有在我第一次点击Animated.View
时才被调用,或者它是否也会在拖动手势的每个后续增量中被调用?
3)在onPanResponderMove
中,dx
和dy
是从触摸开始的总累积距离,还是对应于当前拖动手势的个别增量的小增量?即。如果我在Animated.View
方向拖动100px
总共x
,dx
将100px
或者是否会像当前增加的阻力姿势那样1px
?
如果你能给我一些关于其中任何一个的见解,那就太棒了。
谢谢!
dx
和dy
确实累积了相对于手势开始的x和y位置。所以在你的例子中它将是100。