对于网络,我通常只使用本机滚动机制。它们快速、可靠且不涉及编码。
但是,当我越来越多地在 Unity 中工作时,我发现可用的滚动插件,即使是像 Unity.UI 或 NGUI 这样的大插件也很糟糕。我四处询问,发现大多数平台都是这样。物理很糟糕。
我做了很多研究,并尝试了一些解决方案,从 NGUI scrollView 到 web iScroll.js 等等。我没有找到像原始 Apple 的 PastryKit 一样完美的解决方案。现在,PastryKit 已经过时,已被弃用,没有 API,而且像象形文字一样难以阅读。
但重要的是,在制作过程中,他们设法准确地重现了 iOS 动能滚动物理行为。
我不是在尝试实现 PastryKit,而是在尝试找出它是如何工作的。我试图理解和复制。
我试图找出他们使用的缓动/公式以及他们使用它们的逻辑条件。Apple 有一种疯狂的方式来编写令人困惑的 JS,所以即使我是一个全栈开发人员,我也很难追踪所有内容。而且我认为很少有大脑比一个更好,所以让我们看看,有人理解这个文件吗?:D
https://github.com/jimeh/PastryKit/blob/master/mobile/dist/PastryKit.js
简而言之(所以没有误解):我正在尝试从该文件中提取一组物理规则,我可以将其用作指导,以便在我选择的任何平台上编写我自己的滚动实现。:)
例如:“正常”滚动由 {>300ms && >10px} 定义,苹果在缓和减速动画时使用以下贝塞尔曲线。cubic-bezier.com/#.25,.46,.1,.94
更新:我们不久前解决了这个问题。我们发现了 Apple 的发展势头。 https://medium.com/homullus/recreating-native-ios-scroll-and-momentum-2906d0d711ad