有没有办法获得或计算ScrollView的速度?

时间:2016-04-15 04:47:59

标签: javascript react-native

我正在研究一个反应原生的应用程序,我想知道,如果有办法获得当前的速度,使用<ScrollView>

我注意到钩子onScroll返回了一堆数据,包括nativeEvent对象,但我找不到任何速度。

有什么建议吗? 感谢。

1 个答案:

答案 0 :(得分:1)

通过速度,我想,你的意思是像素/秒,对吗?您可能必须维护计时器并使用onScroll方法获取当前滚动高度。

<ScrollView onScroll={this.handleScroll} />

handleScroll会计算速度。代码可能需要改进。

handleScroll: function(event: Object) {
 console.log((old_offset - event.nativeEvent.contentOffset.y) / time);
 old_offset = event.nativeEvent.contentOffset.y;
}

将old_offset作为old_offset=0

重新初始化到文件顶部

如何获得time?您可以使用performance.now()。它由chrome和mozilla支持。

请勿使用new Date()。社区高度气馁

handleScroll: function(event: Object) {
 var time = last_time_scroll_completed - performance.now()
 console.log((old_offset - event.nativeEvent.contentOffset.y) / time);
 old_offset = event.nativeEvent.contentOffset.y;
 last_time_scroll_completed = performance.now();
}

请注意

这只是一个概念(几乎是一个伪代码)。我没有尝试过这段代码,它根本不起作用。这是我在飞行中编造的东西。祝你好运!