我正在开发一个关于远程控制的项目,发送光标从客户机到服务器的conrdinate x和y。模拟人类鼠标移动的Java机器人类
但
robot.mouseMove(x,y);
只会将光标移动到特定点不移动光标的形态原始点
我发现这个简单的algorthim来模拟鼠标的持续运动
for (int i=0; i<100; i++){
int x = ((end_x * i)/100) + (start_x*(100-i)/100);
int y = ((end_y * i)/100) + (start_y*(100-i)/100);
robot.mouseMove(x,y);
}
但是这个algorthim仍然过于简单,它只是从一个点慢慢移动到另一个点,这仍然不像人类的行为。
我看了一下从网络的远程控制一些开放soruce代码,我觉得这个项目 http://code.google.com/p/java-remote-control/ 使用从MouseListener的类中的方法调用MosueMovement,他们用它来执行“拖”。
我想知道是否有人知道这样做的更好方法?
您可能希望从人类用户那里收集一些数据,然后以各种方式使用该数据来复制人体模拟。 –
从您的帖子看来,您的主要抱怨是鼠标移动速度错误。如果这是主要问题,那么您可以调整代码以使鼠标移动速度保持恒定,然后调整该速度直至接近最佳。 –
也许你可以[Alt] + [Tab]几次,然后在从A到B的路上查看电子邮件和脸书。但是,我认为记录一些用户的鼠标移动可能是一个有趣的实验。使这更现实。考虑到X,Y位置,速度,时间,当前方向,运行Rapid Miner以及可以从中提取的内容等几个变量将会很酷。也许你会想出一个更复杂的算法。 – toniedzwiedz