2011-03-17 41 views
3

Java Robot类允许用户移动鼠标,就像实际的物理鼠标被移动一样。Java机器人鼠标移动:设置速度?

但是,如何以人道(因而不是即时)的方式将鼠标从Point1移动到Point2?又如何设定运动速度?

如果Robot类没有这样的速度,那么如果鼠标只能立即移动,应该用什么样的“算法”来模仿人类的鼠标移动?它应该以一定的递增速度逐个像素地移动鼠标吗?

回答

0

机器人类有一个延迟(...)方法,您可以使用它来控制点到点的移动。尝试一些不同的算法来确定你喜欢什么。

+0

延迟方法眠的机器人。这会如何减缓鼠标的移动?还是你暗示我应该创建我自己的算法,以一定的增量逐个像素地移动鼠标? – Tom 2011-03-17 15:35:47

+0

是的,你需要创建一个循环,移动鼠标一个像素(或两个),然后在移动到下一个像素之前延迟。这就是为什么你可以创建你自己的算法。您可以确定要移动多少个像素以及延迟多长时间等。 – camickr 2011-03-17 16:21:19

+0

虽然不回答哪种算法会很人性化。 – Tom 2011-03-17 20:35:25

4

这里是这里的好方法:

考虑start_x在您的鼠标开始和end_x你在哪里希望它结束​​。同为y

for (int i=0; i<100; i++){ 
    int mov_x = ((end_x * i)/100) + (start_x*(100-i)/100); 
    int mov_y = ((end_y * i)/100) + (start_y*(100-i)/100); 
    robot.mouseMove(mov_x,mov_y); 
    robot.delay(10); 
} 

希望帮助...

+1

将分区移出括号使其更快,也更精确。上述算法写成从(1,1)移动到(1,1)到(0,0)。还有一个问题:它只有99%的道路。 – maaartinus 2011-11-03 23:09:05