Animated.event
Animated.event
的定义是这样的:
static event(argMapping, config?)
这个方法用来把一组数据匹配到动画需要的数据上,最后对匹配完成的数据调用setValue
方法。官方文档有详细的描述https://facebook.github.io/react-native/docs/animated.html#event。
有些两个注意的地方。第一个是处理Pan手势的时候,另一个是处理scroll的时候。
当处理PanResponder
或者onScroll
事件的时候,你需要些你自己的方法来匹配(map)数据。
PanResponder
的例子:
onPanResponderMove: Animated.event([
null, // raw event arg ignored
{dx: this._pan.x, dy: this._pan.y}, // gestureState arg
]),
在onPanResponderMove
方法里,调用了Animated.event
。参数是一个数组,里面有两个元素。我们忽略了第一个初始事件的值。第二个元素是gestureState
,提供了很有用的值dx
和dy
。这两个值就是用户从触碰屏幕开始手指移动的距离。
下面看看onScroll的时候,也许你想在背景色的上做动画等等。总之,在ScrollView或者ListView加入Animated.event是解决这个问题的第一步。
onScroll={Animated.event(
[{nativeEvent: {contentOffset: {x: this._scrollX}}}]
{listener}, // Optional async listener
)
另外,你可以把一个回调方法作为第二个参数传进去。