【发布时间】:2017-02-06 12:19:07
【问题描述】:
我正在尝试创建一个动画拖放功能,如下所示:http://moduscreate.com/animated_drag_and_drop_with_react_native/
我想更改它,以便当用户开始触摸时,对象向上移动,使其不再隐藏在他们的手指下。我希望这个动作是动画的,但我也想在动画期间跟踪平移手势。
现在,只要用户不移动手指,动画就可以正常工作。当触摸开始时,我正在使用此代码为对象设置动画:
onPanResponderStart: (e, gesture) => {
Animated.spring(
this.state.pan,
{
...animationConstants,
toValue: { x: 0, y: -70 },
}
).start((status) => {
// This part ensures that the offset and value are
// set correctly after the animation.
this.state.pan.y.setOffset(-70);
this.state.pan.y.setValue(0);
});
},
但只要他们移动手指,它就会取消动画并跳到顶部。我将此代码用于onPanResponderMove:
onPanResponderMove: Animated.event([null, {
dx: this.state.pan.x,
dy: this.state.pan.y
}]),
我希望动画继续播放,即使用户正在移动手指。
如何更改代码以便为“偏移”而不是“值”设置动画?如果Animated.spring 可以选择使用toOffset: {x: ..., y: ...} 以及toValue,我想我可以解决这个问题。但我不认为它有这个,我不确定我应该如何模仿它。
【问题讨论】:
-
这是一个旧线程,但如果有人到达它:我想你可以使用 flattenOffset() 方法facebook.github.io/react-native/docs/…。然后将偏移量合并到值中,您可以对值进行动画处理,包括偏移量。
标签: javascript ios reactjs animation mobile