我想测量宠物项目的鼠标移动距离。所以我想设置一个实验:让我们说一下我在1米内的行程距离有多精确。
我尝试编写测试程序,但遇到了一些困难:屏幕边框。
我正在使用Robot类设置鼠标位置即将到达边缘但我不确定这是否正确。您是否知道如何解除屏幕或任何其他有效的解决方案?
这是我的测试代码:
public class App {
public static void main( String[] args ) throws AWTException {
Toolkit toolkit = new WToolkit();
int screenResolution = toolkit.getScreenResolution();
Robot robot = new Robot();
List<Point> list = new ArrayList<Point>();
int distance = 0;
while (true) {
if(MouseInfo.getPointerInfo().getLocation().y <= 50)
{
robot.mouseMove(910, 1080);
}
list.add(MouseInfo.getPointerInfo().getLocation().getLocation());
if(list.size() >= 2) {
Point p2 = list.get(list.size()-1);
Point p1 = list.get(list.size()-2);
if(p2.getY() <= p1.getY()) {
distance += (int) Math.sqrt(0 + Math.pow(p2.y - p1.y, 2)); // sqrt(pow(x2-x1) + pow(y2-y1)) sqrt(pow(x2-x1) = 0 for just measure on Y
System.out.println(distance / screenResolution * 0.0254);
}
}
try {
Thread.sleep(200);
} catch ( Exception e) {
System.out.println("something");
}
}
}
}
答案 0 :(得分:1)
在此解决方案中,您将不断更新Points p1和p2以查找更新之间的整体行程距离
//I think this code should work for what you are doing
double distance = Math.sqrt(Math.pow(p1.getX()-p2.getX(),2)+Math.pow(p1.getY()-p2.getY(),2));