And*_*ang 23
首先,让我们写一个空方法,其中参数与您在问题中定义的一样.
public void mouseGlide(int x1, int y1, int x2, int y2, int t, int n) {
}
Run Code Online (Sandbox Code Playgroud)
接下来,让我们创建一个Robot对象,并计算3条信息,这些信息将有助于您将来的计算.不要忘记从实例化Robot中捕获异常.
Robot r = new Robot();
double dx = (x2 - x1) / ((double) n);
double dy = (y2 - y1) / ((double) n);
double dt = t / ((double) n);
Run Code Online (Sandbox Code Playgroud)
dx表示每次滑动时鼠标x坐标的差异.基本上它是总移动距离分为n几步.dy除y坐标外,同样的事情.dt是总滑行时间分为几个n步骤.
最后,构建一个执行n时间的循环,每次将鼠标移近最终位置(采用(dx,dy)步骤).dt在每次执行期间使线程休眠毫秒.你的越大n,滑行越平滑.
最后结果:
public void mouseGlide(int x1, int y1, int x2, int y2, int t, int n) {
try {
Robot r = new Robot();
double dx = (x2 - x1) / ((double) n);
double dy = (y2 - y1) / ((double) n);
double dt = t / ((double) n);
for (int step = 1; step <= n; step++) {
Thread.sleep((int) dt);
r.mouseMove((int) (x1 + dx * step), (int) (y1 + dy * step));
}
} catch (AWTException e) {
e.printStackTrace();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
8360 次 |
| 最近记录: |