Обработка скролла на тачпаде макбука, варианты решения?
Добрый день.
Необходимо сделать динамический скролл. Для скролла колесом мыши реализовал скрипт вида - запись в массив originaleven.wheeldata, суммирование массива за последние 300 мс, деление на 120 и прокрутка на столько позиций. Если длина массива 1 - прокрутка на один.
Не могу реализовать подобное с тачпадом макбука - он вносит миллион значений в массив.
Пытался сделать сортировку массива, выбор большего числа, деление его на какую-то константу и прокрутка на позиции - не вышло. Если провести по тачпаду - он заполняет этот массив очень долго, если ограничить его, то он сразу регистрирует новый массив после окончания.
Можно ли как-то выключить получение вил даты спустя, допустим 100 мс после старта получения информации?
Либо же какие-то еще варианты
Спасибо.
можно использовать вместо throttle - debounce, сам скрипт есть на benalman.com/projects/jquery-throttle-debounce-plugin, там и объяснение, как что работает и зачем используется. Вещь в жизни JS-программиста так или иначе встречающаяся, так что лучше сразу разобраться)
Иван: При скролле он делает меньше значений, но все так же долго заполняющийся массив. В итоге после того, как я свайпаю, элементы скролятся только после окончания заполнения массива. Если я слайсю массив на первые 10 после начала - он слайсит вновь заполнившийся массив на первые 10 и свайпает еще раз. В этом и вся проблема. Так-то я и без тротла доставал наибольшее значение и скролил на него. Вопрос именно во времени получения вилдаты за один свайп. Оно тянется секунды на 3, и пока она не прекратит поступать не выполняется ничего дальше.
haaz: ничего же нам не мешает отписаться от события через 100 мс после начала получения данных. Но вопрос в том - когда на него снова подписаться? Например, я пальцем вожу по тачпаду в течение 10 секунд - что должно происходить с интерфейсом?
Иван: Главное желание - чтобы скролл ускорялся, если больше скроллишь. Я придумал именно такую реализацию, какая есть у меня сейчас и которую я описал в главном вопросе. Но что делать с тракпадом - совершенно не понимаю.
И все-таки - как отказаться от получения вилдаты спустя 100мс? Чтобы это работало хотя бы так.
Иван: Иван, спасибо большое за ответы. Последний вопрос - возможно Вы сталкивались. Суть в том, что я в оверфлоу: скролле посередине экрана кручу песни, каждая из которых - 1 див. Как Вы думаете, или, если сталкивались с подобной задачей, может есть какая-нибудь библиотека на то, чтобы я мог свободно скролить с прилипанием к песне/докручивание до песни (1 песня - 45px) и настройками вида - быстрее скроллишь, быстрее скролится и рабочим трекпадом/мобилкой с инерцией - был бы очень благодарен, спасибо огромное.
(Не знаю, если я закрою вопрос ответив ваш комментарий как решение, сможете ли вы мне еще тут ответить, поэтому пока оставлю открытым)