首先,让我们写出一个空方法,其中的参数与您在问题中定义的一样。
public void mouseGlide(int x1, int y1, int x2, int y2, int t, int n) {
}
接下来,让我们创建一个 Robot 对象并计算 3 条信息,这将有助于您未来的计算。不要忘记从实例化 Robot 中捕获异常。
Robot r = new Robot();
double dx = (x2 - x1) / ((double) n);
double dy = (y2 - y1) / ((double) n);
double dt = t / ((double) n);
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();
}
}