【发布时间】:2018-10-21 06:20:02
【问题描述】:
我正在做一个关于远程控制的项目,将光标的 conrdinate x 和 y 从客户端发送到服务器。
但是
robot.mouseMove(x,y);
只会将光标移动到特定点,而不会将光标从原点移动
我找到了这个简单的算法来模拟鼠标的持续移动
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);
}
但是这个算法还是太简单了,只是从一个点慢慢移动到另一个点,还是不像人的行为。
我已经阅读了一些关于 web 远程控制的开源代码,我找到了这个项目 http://code.google.com/p/java-remote-control/ 正在使用 MouseListener 类中调用 MosueMovement 的方法,它们用于执行“拖动”。
我想知道有没有人知道这样做的更好方法?
【问题讨论】:
-
您可能希望从人类用户那里收集一些数据,然后以各种方式使用这些数据来复制人类模拟。
-
从您的帖子看来,您的主要抱怨是鼠标移动速度错误。如果这是主要问题,那么您可以调整代码以使鼠标移动速度恒定,然后调整该速度直到接近最佳速度。
-
也许你可以 [Alt]+[Tab] 几次,然后在从 A 到 B 的途中检查电子邮件和 facebook。不过,说真的,我认为记录几个人的鼠标移动用户可能是一个有趣的实验,使这更现实。考虑几个变量会很酷,例如 X、Y 位置、速度、时间、当前方向,运行 Rapid Miner 并查看可以从中提取什么。也许你能想出一个更复杂的算法。