我尝试使用类机器人将鼠标从一个按钮移动到数组中的另一个按钮的动画。 这是我使用的两种方法:
public void optimusprime(int row, int column, JButton current) throws InterruptedException {
Point p;
Point p2;
double x;
double y;
double x2;
double y2;
double conx = 0;
double m;
double b;
double cony;
p = current.getLocationOnScreen();
x = (int)( p.getX() + 30.5);
y = (int)( p.getY() + 30.5);
optimus((int) x, (int) y);
p2 = mesa[row][column].getLocationOnScreen();
x2 = (int) (p2.getX() + 30.5);
y2 = (int) (p2.getY() + 30.5);
m = (y2 - y) / (x2 - x);
b = y - (m * x);
while (conx != x2) {
conx = x;
cony = (m * conx) + b;
optimus((int) conx, (int) cony);
conx++;
Thread.sleep(500);
}
}
public void optimus(int x, int y) {
try {
Robot robot = new Robot();
robot.mouseMove(x, y);
} catch (AWTException e) {
}
}
任何人都可以在这里帮助我或者至少给出建议吗?库存陷入无限循环(必须关闭电脑)并且根本不起作用;我是 Java 新手,这可能是几个愚蠢的错误;
最佳答案
问题可能是您的 conx
永远不会真正等于您的 x2
因为您将所有数学运算都作为 double 进行。这意味着 conx
将从略小于 x2
变为略大于 x2
,并且会在两者之间来回反弹或者将继续沿着当前的轨迹前进。您需要添加一些逻辑来确保您不会超越目标,您可以通过在目标足够接近时设置阈值或在超过目标后立即停止来实现这一点。
关于java - 如何用机器人类制作鼠标从a点到b点的运动动画?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17416072/