0

我的问题是,如果用户快速滑动,我应该使用什么算法或数学来保持屏幕滑动势头以保持滚动。

示例:屏幕上有一个图像在绕圈旋转,如果用户缓慢滑动相机,它只会随着手指移动。但是,如果用户真的很快,图像应该像旋转木马一样旋转几秒钟,这取决于用户滑动的速度?

我能够从用户触摸屏幕时的点以及用户不断滑动和抬起手指的点获得点,有什么想法吗?

我有一个每秒调用 60 次的方法,有什么想法吗?

4

1 回答 1

1

基本上,您需要一个初始速度(例如,以每秒点数为单位)和一个减速率(以点数/秒^2 为单位)。如果您使用手势识别器来检测滑动,它将免费为您提供速度。否则,您将不得不自己根据滑动不同阶段的位置和时间戳来计算它。

现在,在您的更新方法中,根据速度推进您的视图:

distance travelled = velocity * time

并使用减速率来更新下一帧的速度:

delta_v = deceleration rate * time // should give a negative value
new velocity = velocity + delta_v

一旦速度下降到接近 0 的阈值,停止运动。

这些公式适用于线性运动,但即使你在做圆周运动,我也会尝试用它们做实验。或者你可以用角速度做同样的计算。维基百科可能有你必须知道的公式。

于 2012-01-01T09:32:47.900 回答