我正在研究一个反应原生的应用程序,我想知道,如果有办法获得当前的速度,使用<ScrollView>
?
我注意到钩子onScroll
返回了一堆数据,包括nativeEvent
对象,但我找不到任何速度。
有什么建议吗? 感谢。
答案 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();
}
请注意
这只是一个概念(几乎是一个伪代码)。我没有尝试过这段代码,它根本不起作用。这是我在飞行中编造的东西。祝你好运!