我问自己是否有在线示例,其中介绍了如何在触摸手势中检测形状。
例如一个矩形或一个圆圈(或更复杂的一颗心......)
或确定滑动的速度(随着时间的推移(就像我将我的iphone刷到50英里每小时))
答案 0 :(得分:8)
对于非常简单的手势(水平与垂直滑动),计算两次触摸之间的x和y差异。
dy = abs(y2 - y1)
dx = abs(x2 - x1)
f = dy/dx
接近零的f是水平滑动。 f接近1是对角线滑动。而一个非常大的f是垂直滑动(请记住,dx可能为零,因此上述不会产生所有x和y的有效结果)。
如果你对速度感兴趣,毕达哥拉斯可以提供帮助。两次触摸之间的距离长度为:
l = sqrt(dx*dx + dy*dy)
如果触摸发生在时间t1和t2,则速度为:
tdiff = abs(t2 - t1)
s = l/tdiff
由您来决定您解释为快或慢的s值。
您可以将此方法扩展到更复杂的数字,例如您的方形形状可以是水平/垂直/水平/垂直滑动,其中包含前一次滑动停止的起点/终点。
对于更复杂的数字,使用理想化的形状可能更好。可以将多边形形状视为理想形状,并检查是否有一系列触摸
你可以从那里进一步改进。
答案 1 :(得分:0)
确实存在用于检测触摸屏上的非简单触摸的其他方法。查看华盛顿大学的$ 1 unistroke手势识别器。 http://depts.washington.edu/aimgroup/proj/dollar/
它基本上是这样的:
最棒的是步骤1-3的输出是可以添加到已知手势阵列的参考路径。这使您可以非常轻松地提供应用程序手势支持,并根据需要创建自己的一组自定义手势。
这已由Adam Preble移植到iOS,github上的repo: http://github.com/preble/GLGestureRecognizer