2016-07-27 2 views
1

С веб-сайтом я обычно использую собственные механизмы прокрутки. Они быстры, надежны и не связаны с кодированием.Нужна помощь в разрезании и воссоздании идеального прокрутки на основе PastryKit

Но, работая все больше и больше в Unity, я обнаружил, что доступные плагины для прокрутки, даже большие, такие как Unity.UI или NGUI, просто ужасны. Я спросил его и узнал, что это похоже на большинстве платформ. Физика плохая.

Я провел кучу исследований, и я попробовал несколько решений: от прокрутки NGUIView до веб-сайта iScroll.js и так далее. Я не нашел решения такого же совершенного, как оригинальный PastryKit от Apple. Теперь PastryKit устарел, устарел, не имеет API и так трудно читать как иероглифы.

Но что такое Важно заключается в том, что при его создании им удалось точно воссоздать физическое поведение кинетического прокрутки iOS.

Я не пытаюсь реализовать PastryKit, я пытаюсь выяснить, как это работает. Я пытаюсь понять и воспроизвести.

Я пытаюсь выяснить easings/формулу они используют и логические условия они используют их. Apple, имеет сумасшедший способ написания запутанного JS, так что даже Тхо я полный разработчик стека, я мне тяжело проследить все. И я понял, что несколько мозгов лучше, чем один, так что давайте посмотрим, кто-нибудь понимает этот файл? : D

https://github.com/jimeh/PastryKit/blob/master/mobile/dist/PastryKit.js

КОРОЧЕ (так что нет никаких недоразумений): Я пытаюсь извлечь набор правил физики из этого файла, который я могу использовать в качестве руководящих принципов для того, чтобы написать свою собственную реализацию прокрутки на любой платформе, которую я выбираю. :)

например: «нормальная» прокрутка определяется с помощью {> 300ms & &> 10px}, при использовании анимации замедления при использовании яблока используется следующая кривая Безье. Кубик -bezier.com/#.25,.46,.1,.94

ОБНОВЛЕНИЕ: Мы решили это некоторое время назад. Мы узнали, как Apple делает свой импульс. https://medium.com/homullus/recreating-native-ios-scroll-and-momentum-2906d0d711ad

+0

NGUI? что? сколько вам лет, например, 95? :) – Fattie

+0

быстрый случайный пример использования Unity.UI (это абсолютно тривиально) ...http://stackoverflow.com/a/34744087/294884 – Fattie

+0

Я обновил вопрос, надеясь, что будет легче понять, чего я пытаюсь достичь :) Спасибо за ваши ответы Джо –

ответ

0

После многих часов рассечения алгоритма, мы пришли к выводу, что Apple, на самом деле, используя магические числа. И магическое число: (барабанный) импульс * 0.95.

В основном, в то время как прикосновение длится, яблоко позволяет перемещать экран 1: 1.

На сенсорном конце Apple получит импульс, разделив количество пикселей, которые пользователь провёл, и время, в которое пользователь замахнулся. Если число пикселей было меньше 10 или время было меньше 0,5, импульс был бы зажат до нуля.

В любом случае, как только нам известен импульс (скорость), они умножат его на 0,95 в каждом кадре, а затем переместит экран на столько.

Так идиотично просто и элегантно, что больно. :)