|
|
@ -114,7 +114,7 @@ public class JMacro {
|
|
|
|
public void mouseLeftClick(ScreenPoint rect) {
|
|
|
|
public void mouseLeftClick(ScreenPoint rect) {
|
|
|
|
mouseMove(rect);
|
|
|
|
mouseMove(rect);
|
|
|
|
robot.mousePress(InputEvent.BUTTON1_DOWN_MASK);
|
|
|
|
robot.mousePress(InputEvent.BUTTON1_DOWN_MASK);
|
|
|
|
waitTap();
|
|
|
|
delayTap();
|
|
|
|
robot.mouseRelease(InputEvent.BUTTON1_DOWN_MASK);
|
|
|
|
robot.mouseRelease(InputEvent.BUTTON1_DOWN_MASK);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
@ -146,11 +146,11 @@ public class JMacro {
|
|
|
|
*/
|
|
|
|
*/
|
|
|
|
public void mouseLeftDrag(ScreenPoint start, ScreenPoint end, boolean smooth) {
|
|
|
|
public void mouseLeftDrag(ScreenPoint start, ScreenPoint end, boolean smooth) {
|
|
|
|
mouseMove(start, smooth);
|
|
|
|
mouseMove(start, smooth);
|
|
|
|
waitTap();
|
|
|
|
delayTap();
|
|
|
|
robot.mousePress(InputEvent.BUTTON1_DOWN_MASK);
|
|
|
|
robot.mousePress(InputEvent.BUTTON1_DOWN_MASK);
|
|
|
|
waitTap();
|
|
|
|
delayTap();
|
|
|
|
mouseMove(end, smooth);
|
|
|
|
mouseMove(end, smooth);
|
|
|
|
waitTap();
|
|
|
|
delayTap();
|
|
|
|
robot.mouseRelease(InputEvent.BUTTON1_DOWN_MASK);
|
|
|
|
robot.mouseRelease(InputEvent.BUTTON1_DOWN_MASK);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
@ -173,11 +173,11 @@ public class JMacro {
|
|
|
|
*/
|
|
|
|
*/
|
|
|
|
public void mouseRightDrag(ScreenPoint start, ScreenPoint end, boolean smooth) {
|
|
|
|
public void mouseRightDrag(ScreenPoint start, ScreenPoint end, boolean smooth) {
|
|
|
|
mouseMove(start, smooth);
|
|
|
|
mouseMove(start, smooth);
|
|
|
|
waitTap();
|
|
|
|
delayTap();
|
|
|
|
robot.mousePress(InputEvent.BUTTON3_DOWN_MASK);
|
|
|
|
robot.mousePress(InputEvent.BUTTON3_DOWN_MASK);
|
|
|
|
waitTap();
|
|
|
|
delayTap();
|
|
|
|
mouseMove(end, smooth);
|
|
|
|
mouseMove(end, smooth);
|
|
|
|
waitTap();
|
|
|
|
delayTap();
|
|
|
|
robot.mouseRelease(InputEvent.BUTTON3_DOWN_MASK);
|
|
|
|
robot.mouseRelease(InputEvent.BUTTON3_DOWN_MASK);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
@ -187,11 +187,11 @@ public class JMacro {
|
|
|
|
* @param rect 矩形区域
|
|
|
|
* @param rect 矩形区域
|
|
|
|
*/
|
|
|
|
*/
|
|
|
|
public void mouseWheelClick(ScreenRect rect) {
|
|
|
|
public void mouseWheelClick(ScreenRect rect) {
|
|
|
|
waitTap();
|
|
|
|
delayTap();
|
|
|
|
robot.mouseMove(rect.getCenter()[0], rect.getCenter()[1]);
|
|
|
|
robot.mouseMove(rect.getCenter()[0], rect.getCenter()[1]);
|
|
|
|
waitTap();
|
|
|
|
delayTap();
|
|
|
|
robot.mousePress(InputEvent.BUTTON2_DOWN_MASK);
|
|
|
|
robot.mousePress(InputEvent.BUTTON2_DOWN_MASK);
|
|
|
|
waitTap();
|
|
|
|
delayTap();
|
|
|
|
robot.mouseRelease(InputEvent.BUTTON2_DOWN_MASK);
|
|
|
|
robot.mouseRelease(InputEvent.BUTTON2_DOWN_MASK);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
@ -201,11 +201,11 @@ public class JMacro {
|
|
|
|
* @param rect 矩形区域
|
|
|
|
* @param rect 矩形区域
|
|
|
|
*/
|
|
|
|
*/
|
|
|
|
public void mouseRightClick(ScreenRect rect) {
|
|
|
|
public void mouseRightClick(ScreenRect rect) {
|
|
|
|
waitTap();
|
|
|
|
delayTap();
|
|
|
|
robot.mouseMove(rect.getCenter()[0], rect.getCenter()[1]);
|
|
|
|
robot.mouseMove(rect.getCenter()[0], rect.getCenter()[1]);
|
|
|
|
waitTap();
|
|
|
|
delayTap();
|
|
|
|
robot.mousePress(InputEvent.BUTTON3_DOWN_MASK);
|
|
|
|
robot.mousePress(InputEvent.BUTTON3_DOWN_MASK);
|
|
|
|
waitTap();
|
|
|
|
delayTap();
|
|
|
|
robot.mouseRelease(InputEvent.BUTTON3_DOWN_MASK);
|
|
|
|
robot.mouseRelease(InputEvent.BUTTON3_DOWN_MASK);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
@ -215,9 +215,9 @@ public class JMacro {
|
|
|
|
* @param rect 矩形区域
|
|
|
|
* @param rect 矩形区域
|
|
|
|
*/
|
|
|
|
*/
|
|
|
|
public void mouseLeftDoubleClick(ScreenRect rect) {
|
|
|
|
public void mouseLeftDoubleClick(ScreenRect rect) {
|
|
|
|
waitTap();
|
|
|
|
delayTap();
|
|
|
|
robot.mouseMove(rect.getCenter()[0], rect.getCenter()[1]);
|
|
|
|
robot.mouseMove(rect.getCenter()[0], rect.getCenter()[1]);
|
|
|
|
waitTap();
|
|
|
|
delayTap();
|
|
|
|
robot.mousePress(InputEvent.BUTTON1_DOWN_MASK);
|
|
|
|
robot.mousePress(InputEvent.BUTTON1_DOWN_MASK);
|
|
|
|
robot.delay(100);
|
|
|
|
robot.delay(100);
|
|
|
|
robot.mouseRelease(InputEvent.BUTTON1_DOWN_MASK);
|
|
|
|
robot.mouseRelease(InputEvent.BUTTON1_DOWN_MASK);
|
|
|
@ -242,6 +242,20 @@ public class JMacro {
|
|
|
|
return new ScreenRect(0, 0, tk.getScreenSize().width, tk.getScreenSize().height);
|
|
|
|
return new ScreenRect(0, 0, tk.getScreenSize().width, tk.getScreenSize().height);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
|
|
* 全屏查找图片
|
|
|
|
|
|
|
|
*
|
|
|
|
|
|
|
|
* @param legendName 图例名称
|
|
|
|
|
|
|
|
* @param minSimilar 最低相似度
|
|
|
|
|
|
|
|
* @return 匹配图片区域
|
|
|
|
|
|
|
|
*/
|
|
|
|
|
|
|
|
public ScreenRect findPic(String legendName, double minSimilar) {
|
|
|
|
|
|
|
|
if (!legendName.endsWith(".png")) {
|
|
|
|
|
|
|
|
legendName = legendName + ".png";
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
return findPic(new File(legend, legendName), minSimilar);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
/**
|
|
|
|
* 全屏查找图片
|
|
|
|
* 全屏查找图片
|
|
|
|
*
|
|
|
|
*
|
|
|
@ -264,6 +278,31 @@ public class JMacro {
|
|
|
|
return findPic(getScreenRect(), pic, minSimilar);
|
|
|
|
return findPic(getScreenRect(), pic, minSimilar);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
|
|
* 应用视口查找图例
|
|
|
|
|
|
|
|
*
|
|
|
|
|
|
|
|
* @param screenRect 应用视口
|
|
|
|
|
|
|
|
* @param legendName 图例名称
|
|
|
|
|
|
|
|
* @param minSimilar 最低相似度
|
|
|
|
|
|
|
|
* @return 匹配图片区域
|
|
|
|
|
|
|
|
*/
|
|
|
|
|
|
|
|
public ScreenRect findPic(ScreenRect screenRect, String legendName, double minSimilar) {
|
|
|
|
|
|
|
|
return findPic(screenRect, new File(legend, legendName), minSimilar);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
|
|
* 应用视口查找图例
|
|
|
|
|
|
|
|
*
|
|
|
|
|
|
|
|
* @param screenRect 应用视口
|
|
|
|
|
|
|
|
* @param legend 图例文件
|
|
|
|
|
|
|
|
* @param minSimilar 最低相似度
|
|
|
|
|
|
|
|
* @return 匹配图片区域
|
|
|
|
|
|
|
|
*/
|
|
|
|
|
|
|
|
public ScreenRect findPic(ScreenRect screenRect, File legend, double minSimilar) {
|
|
|
|
|
|
|
|
return findPic(screenRect, Imager.load(legend), minSimilar);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
/**
|
|
|
|
* 获取定位
|
|
|
|
* 获取定位
|
|
|
|
*
|
|
|
|
*
|
|
|
@ -316,18 +355,23 @@ public class JMacro {
|
|
|
|
return null;
|
|
|
|
return null;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
public void waitTap() {
|
|
|
|
public void delay() {
|
|
|
|
int i = RandomUtil.randomInt(100, 200);
|
|
|
|
delayNormal();
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
public void delayTap() {
|
|
|
|
|
|
|
|
int i = RandomUtil.randomInt(100, 500);
|
|
|
|
robot.delay(i);
|
|
|
|
robot.delay(i);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
public void waitNormal() {
|
|
|
|
public void delayNormal() {
|
|
|
|
int i = RandomUtil.randomInt(500, 1500);
|
|
|
|
int i = RandomUtil.randomInt(500, 1500);
|
|
|
|
robot.delay(i);
|
|
|
|
robot.delay(i);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
public void waitLong() {
|
|
|
|
public void delayLong() {
|
|
|
|
int i = RandomUtil.randomInt(2000, 5000);
|
|
|
|
int i = RandomUtil.randomInt(1500, 3000);
|
|
|
|
robot.delay(i);
|
|
|
|
robot.delay(i);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
@ -354,6 +398,21 @@ public class JMacro {
|
|
|
|
return waitAndFindPic(rect, file, minSimilar, 10, TimeUnit.SECONDS);
|
|
|
|
return waitAndFindPic(rect, file, minSimilar, 10, TimeUnit.SECONDS);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
|
|
* 等待并查找图片
|
|
|
|
|
|
|
|
*
|
|
|
|
|
|
|
|
* @param rect 查找区域
|
|
|
|
|
|
|
|
* @param legendName 图例名称
|
|
|
|
|
|
|
|
* @param minSimilar 最低相似度
|
|
|
|
|
|
|
|
* @return 匹配图片区域
|
|
|
|
|
|
|
|
*/
|
|
|
|
|
|
|
|
public ScreenRect waitAndFindPic(ScreenRect rect, String legendName, double minSimilar) {
|
|
|
|
|
|
|
|
if (!legendName.endsWith(".png")) {
|
|
|
|
|
|
|
|
legendName = legendName + ".png";
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
return waitAndFindPic(rect, new File(legend, legendName), minSimilar, 10, TimeUnit.SECONDS);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
/**
|
|
|
|
* 等待并查找图片
|
|
|
|
* 等待并查找图片
|
|
|
|
*
|
|
|
|
*
|
|
|
@ -390,7 +449,7 @@ public class JMacro {
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
while (true) {
|
|
|
|
while (true) {
|
|
|
|
waitTap();
|
|
|
|
delayTap();
|
|
|
|
ScreenRect pic = findPic(rect, image, minSimilar);
|
|
|
|
ScreenRect pic = findPic(rect, image, minSimilar);
|
|
|
|
if (pic != null) {
|
|
|
|
if (pic != null) {
|
|
|
|
return pic;
|
|
|
|
return pic;
|
|
|
@ -463,5 +522,4 @@ public class JMacro {
|
|
|
|
}
|
|
|
|
}
|
|
|
|
return matchPic(rect, new File(legend, legendName), minSimilar) != null;
|
|
|
|
return matchPic(rect, new File(legend, legendName), minSimilar) != null;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|