gpt4 book ai didi

iphone - 如何在 android 和 iphone 上实现相同的 throw 结果

转载 作者:行者123 更新时间:2023-11-29 00:44:41 25 4
gpt4 key购买 nike

我将一款游戏从 iPhone 移植到了安卓系统。所有基于 OpenGL 的滚动计算完全相同。我注意到在 iPhone 上滚动游戏时我可以滚动得更快,而且我抬起手指时的起始速度感觉与手指移动时的速度相同。

然而,不幸的是,在 Android 设备上,这是不一样的。当我在滚动时抬起手指时,开始滚动速度感觉变慢了。在 iPhone 上滚动感觉更准确。

Android 处理触摸的方式与 iPhone 有何不同?以及如何利用这一点来实现与 iPhone 类似的感觉。在 Android 上的所有应用程序中,当我举起手指的速度与手指移动的速度感觉不一样。

最佳答案

我找到了。 android 给出一个 ACTION_MOVE,然后给出相同(或接近)位置的 ACTION_UP。 iPhone 根本不会这样做!它只是给了一个触摸结束!因此,如果有运动,我总是会在 android 上至少有 3 个点,但在 iPhone 上有 2 个点(在不同位置触地、触地)

接下来是ACTION_MOVE 和ACTION_UP 不是马上发生的,它在计算采样点的平均速度时有重要的时间间隔。

解决方案:在 ACTION_UP 上,如果有 ACTION_MOVE 滑动所有存储的秒数,以便 ACTION_MOVE 在 ACTION_UP 发生时“发生”。不要将最后的润色点放在速度计算中。现在像往常一样计算速度。

总结

在 Android 上,如果您移动了手指,您会在 ACTION_UP 之前获得 ACTION_MOVE。并且 ACTION_UP 大致位于 ACTION_MOVE 的相同位置,使得它看起来好像结束时的速度大致为 0。iPhone 不这样做,iPhone 不会为最后的 touchesEnded 提供 touchesMoved(IE 向下触摸,移动手指,抬起,如果你在 iPhone 上做得足够快,你将不会得到 touchesMoved 手指的中间事件,而在 Android 上你会这样做)。

Android/iPhone 等同物

  1. ACTION_UP = touchesEnded
  2. ACTION_DOWN = touchesBegan
  3. ACTION_MOVE = touchesMoved

我还注意到在 Android 上有一些点历史功能。我没有使用那些。我在自己的数组中存储了触摸和时间戳。

关于iphone - 如何在 android 和 iphone 上实现相同的 throw 结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7031384/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com