setOffset
setOffset
这个方法是Aniamted.Value
和Animated.ValueXY
都有的。但是更多的用在Animated.ValueXY
实例,以及PanResponder
和onPanResponderGrant
调用中。
使用setOffset
方法,可以给我们的动画值设定一个基础值(或者偏差值)。比如,如果你设置了offset为100,而Animated.Value
的值为50,那么动画执行的时候使用的值是150.
componentWillMount() {
this._animatedValue = new Animated.ValueXY()
this._value = {x: 0, y: 0}
this._animatedValue.addListener((value) => this._value = value);
this._panResponder = PanResponder.create({
onMoveShouldSetResponderCapture: () => true, //Tell iOS that we are allowing the movement
onMoveShouldSetPanResponderCapture: () => true, // Same here, tell iOS that we allow dragging
onPanResponderGrant: (e, gestureState) => {
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}
]), // Creates a function to handle the movement and set offsets
onPanResponderRelease: () => {
this._animatedValue.flattenOffset(); // Flatten the offset so it resets the default positioning
}
});
},
// To use
<Animated.View style={[styles.box, {transform: this._animatedValue.getTranslateTransform()}]} {...this._panResponder.panHandlers} />