2012-01-07 82 views
2

我写了iPhone - Mac,客户端 - 服务器应用程序,允许通过触摸板使用鼠标。如何模拟鼠标加速?

现在在发送的每个数据包上,我都将光标移动了大量的像素(现在为10px)。 这不准确。当我将灵敏度更改为1px时,它会变慢。

我想知道如何增强可用性和模拟鼠标加速。

任何想法?

回答

6

我建议以下程序:

ON THE IPHONE:

  1. 确定xy方向移动的距离,让我们命名这个dxdy
  2. 计算此对应的总距离:dr = sqrt(dx^2+dy^2)
  3. 确定已经过了多少时间,并计算移动的速度:v = dr/dt
  4. 执行关于速度一些非线性变换,例如:v_new = a * v + b * v^2(开始a=1b=0为没有加速度,然后用于实验的最佳值)
  5. 计算新的距离:dr_new = v_new * dt
  6. 计算新距离x/y方向: dx_new = dx * dr_new/drdy_new = dy * dr_new/dr
  7. 发送到dx_newdy_new到Mac。

ON THE MAC:

  1. 移动鼠标通过dx_newdy_new像素x/y方向。

注:这可能抖动很多,你可以试试平均(3)与前两个或三个测量的速度,如果它跳动得多步骤后的速度。

+0

据我了解,会有一些波动。如果我测量距离和速度 - 数据包将在特定操作后发送(直到移动结束?)。 鼠标必须与手指同时在触摸屏上移动。 – yershuachu 2012-01-08 09:53:13

+0

要说清楚。我存储以前的X和Y位置和触摸时间,并使用当前触摸x,y和当前触摸时间进行计算。它完美的作品。 – yershuachu 2012-01-09 16:10:38