Для начала давайте просто напишем пустой метод, параметры которого будут такими, как вы определили в своем вопросе.
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,д)).Во время каждого выполнения заставляйте поток спать в течение 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();
}
}