2016-04-15 2 views
1

Я работаю над реактивным приложением, и мне было интересно, используя <ScrollView>, если бы был способ получить текущую скорость?Есть ли способ получить или рассчитать скорость ScrollView?

Я заметил крючок onScroll, который возвращает кучу данных, включая объект nativeEvent, но я не мог найти ничего для скорости.

Любое предложение? Спасибо.

ответ

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; 
} 

Initialize old_offset назад в верхней части файла, как old_offset=0

Как получить time? Вы можете использовать performance.now(). Он поддерживается хромом, а также мозилла.

Не использовать 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(); 
} 

ОБРАТИТЕ ВНИМАНИЕ

Это просто понятие (почти псевдо-код). Я не пробовал этот код, он может вообще не работать. Это то, что я сделал на лету. Удачи!

Смежные вопросы