自动发帖软件
标题:
AIWROK软件苹果系统点击方法综合示例
[打印本页]
作者:
发帖软件
时间:
3 小时前
标题:
AIWROK软件苹果系统点击方法综合示例
AIWROK软件苹果系统点击方法综合示例
1.png
(874.87 KB, 下载次数: 0)
3 小时前
上传
// AIWROK苹果系统点击方法综合示例
// 🍎交流QQ群711841924群一,苹果内测群,528816639
// 本文件整合了所有点击相关的操作方法
function sleep(ms) {
var start = new Date().getTime();
while (new Date().getTime() - start < ms) {
}
}
function main() {
printl("========== AIWROK苹果系统点击方法综合示例 ==========\n");
demoHidClickMethods(); // 示例1: HID基础点击方法
demoHidPercentClickMethods(); // 示例2: HID百分比点击方法
demoHidDoubleClickMethods(); // 示例3: HID双击方法
demoOcrClickMethods(); // 示例4: OCR识别后点击方法
demoImageFindClickMethods(); // 示例5: 找图后点击方法
demoUIClickMethods(); // 示例6: UI组件点击方法
demoMouseClickMethods(); // 示例7: 鼠标操作方法
demoAdvancedClickMethods(); // 示例8: 高级点击方法
demoPracticalClickExamples(); // 示例9: 实用点击场景
printl("\n========== 所有示例执行完毕 ==========");
}
// ========== 示例1: HID基础点击方法 ==========
function demoHidClickMethods() {
printl("【示例1】HID基础点击方法");
printl("说明:使用hid.click()在指定坐标位置点击");
try {
var x = 500;
var y = 800;
printl("点击坐标: x=" + x + ", y=" + y);
hid.click(x, y);
printl("✓ 点击成功");
} catch (e) {
printl("错误: " + e);
}
printl("");
}
// ========== 示例2: HID百分比点击方法 ==========
function demoHidPercentClickMethods() {
printl("【示例2】HID百分比点击方法");
printl("说明:使用hid.clickPercent()在屏幕百分比位置点击");
try {
var xPercent = 0.5;
var yPercent = 0.5;
printl("点击百分比坐标: x=" + xPercent + ", y=" + yPercent);
hid.clickPercent(xPercent, yPercent);
printl("✓ 点击屏幕中心成功");
} catch (e) {
printl("错误: " + e);
}
printl("");
}
// ========== 示例3: HID双击方法 ==========
function demoHidDoubleClickMethods() {
printl("【示例3】HID双击方法");
printl("说明:使用hid.doubleClick()和hid.doubleClickPercent()执行双击操作");
try {
printl("方式1: 绝对坐标双击");
var x = 500;
var y = 800;
hid.doubleClick(x, y);
printl("✓ 绝对坐标双击成功: (" + x + ", " + y + ")");
sleep(1000);
printl("方式2: 百分比坐标双击");
hid.doubleClickPercent(0.5, 0.5);
printl("✓ 百分比坐标双击成功: (0.5, 0.5)");
} catch (e) {
printl("错误: " + e);
}
printl("");
}
// ========== 示例4: OCR识别后点击方法 ==========
function demoOcrClickMethods() {
printl("【示例4】OCR识别后点击方法");
printl("说明:先使用OCR识别文本,然后点击识别到的文本位置");
try {
var ocrResult = screen.ocr(0, 0, 1, 1);
printl("方式1: 精确查找文本并点击中心点");
var target1 = ocrResult.findText("设置", [0, 0, 1, 1]);
if (target1 != null) {
var centerX = target1.x + target1.width / 2;
var centerY = target1.y + target1.height / 2;
printl("找到文本 '设置',点击中心点");
hid.click(centerX * device.width, centerY * device.height);
printl("✓ 点击成功");
} else {
printl("未找到文本 '设置'");
}
sleep(1000);
printl("方式2: 查找包含特定文本并随机点击");
var target2 = ocrResult.findIncludeText("日志", [0, 0, 1, 1]);
if (target2 != null) {
printl("找到包含 '日志' 的文本");
target2.clickRandom();
printl("✓ 随机点击成功");
} else {
printl("未找到包含 '日志' 的文本");
}
sleep(1000);
printl("方式3: 使用正则表达式查找并点击");
var targets = ocrResult.findTextWithRegex("\\d+", [0, 0, 1, 1]);
if (targets != null && targets.length > 0) {
printl("找到 " + targets.length + " 个包含数字的文本");
targets[0].clickRandom();
printl("✓ 点击第一个匹配项成功");
} else {
printl("未找到包含数字的文本");
}
sleep(1000);
printl("方式4: 遍历所有文本并点击符合条件的文本");
var allDetects = ocrResult.getAllDetect();
for (var i = 0; i < allDetects.length; i++) {
var textStr = String(allDetects[i].text);
if (textStr.indexOf("设置") !== -1) {
printl("找到包含 '设置' 的文本");
allDetects[i].clickRandom();
printl("✓ 点击成功");
break;
}
}
} catch (e) {
printl("错误: " + e);
}
printl("");
}
// ========== 示例5: 找图后点击方法 ==========
function demoImageFindClickMethods() {
printl("【示例5】找图后点击方法");
printl("说明:先使用OpenCV查找图片,然后点击找到的图片位置");
try {
printl("方式1: 使用findImagesEx查找单个图片并点击");
var detects1 = opencv.findImagesEx('图色769598.cv');
if (detects1 != null && detects1.length > 0) {
printl("找到目标,数量: " + detects1.length);
detects1[0].clickRandom();
printl("✓ 点击第一个目标成功");
} else {
printl("未找到目标");
}
sleep(1000);
printl("方式2: 查找多个相同图片并批量点击");
var detects2 = opencv.findImagesEx('图色769598.cv');
if (detects2 != null && detects2.length > 0) {
printl("找到 " + detects2.length + " 个相同目标");
for (var i = 0; i < detects2.length; i++) {
printl("点击目标 " + (i + 1) + "/" + detects2.length);
detects2[i].clickRandom();
sleep(300);
}
printl("✓ 批量点击完成");
} else {
printl("未找到目标");
}
sleep(1000);
printl("方式3: 使用templateMatch查找并点击");
var image = screen.screenShotFull();
var mat = image.getMat();
var templates = ['图色769598.cv', '图色769599.cv'];
var matchResults = opencv.templateMatch(mat, templates, 0.8, [0, 0, 1, 1], false);
if (matchResults != null && matchResults.length > 0) {
printl("模板匹配找到 " + matchResults.length + " 个目标");
matchResults[0].clickRandom();
printl("✓ 点击第一个匹配目标成功");
} else {
printl("未找到匹配目标");
}
mat.close();
image.close();
sleep(1000);
printl("方式4: 指定区域找图并点击");
var region = [0.2, 0.2, 0.8, 0.8];
printl("在区域 [" + region.join(", ") + "] 内查找");
var regionResults = opencv.findImages(['图色769598.cv'], 0.7, 3000, 1, region);
if (regionResults != null && regionResults.length > 0) {
printl("在指定区域内找到目标");
regionResults[0].clickRandom();
printl("✓ 点击成功");
} else {
printl("指定区域内未找到目标");
}
} catch (e) {
printl("错误: " + e);
}
printl("");
}
// ========== 示例6: UI组件点击方法 ==========
function demoUIClickMethods() {
printl("【示例6】UI组件点击方法");
printl("说明:使用UI组件的onClick方法处理点击事件");
try {
printl("方式1: 按钮点击事件");
var button = new Button();
button.setText("点击我");
button.setColor(0, 150, 0);
button.onClick(() => {
printl("按钮被点击了!");
hid.clickPercent(0.5, 0.5);
});
printl("✓ 按钮点击事件已设置");
printl("方式2: 复选框点击事件");
var checkBox = new CheckBox();
checkBox.setText("启用选项");
checkBox.onClick(() => {
printl("复选框状态: " + (checkBox.isSelect() ? "选中" : "未选中"));
});
printl("✓ 复选框点击事件已设置");
printl("方式3: 标签点击事件(通过Button模拟)");
var labelButton = new Button();
labelButton.setText("标签按钮");
labelButton.setColor(100, 100, 100);
labelButton.onClick(() => {
printl("标签按钮被点击");
});
printl("✓ 标签按钮点击事件已设置");
printl("方式4: 闭包保存参数的点击事件");
for (var i = 0; i < 3; i++) {
var btn = new Button();
btn.setText("按钮" + i);
btn.setColor(50 + i * 50, 100, 150);
(function(index) {
btn.onClick(() => {
printl("按钮" + index + "被点击");
hid.clickPercent(0.3 + index * 0.2, 0.5);
});
})(i);
}
printl("✓ 闭包参数点击事件已设置");
} catch (e) {
printl("错误: " + e);
}
printl("");
}
// ========== 示例7: 鼠标操作方法 ==========
function demoMouseClickMethods() {
printl("【示例7】鼠标操作方法");
printl("说明:使用鼠标相关方法进行点击和移动操作");
try {
printl("方式1: 鼠标按下");
hid.mouseDown();
printl("✓ 鼠标按下");
sleep(500);
printl("方式2: 鼠标抬起");
hid.mouseUp();
printl("✓ 鼠标抬起");
sleep(500);
printl("方式3: 鼠标移动(相对位置)");
hid.mouseMove(10, 10);
printl("✓ 鼠标向右移动10,向下移动10");
sleep(500);
printl("方式4: 鼠标回到主页");
hid.mouseHome();
printl("✓ 鼠标回到主页");
sleep(500);
printl("方式5: 移动到绝对坐标");
hid.moveToRealPoint(500, 500);
printl("✓ 鼠标移动到坐标(500, 500)");
} catch (e) {
printl("错误: " + e);
}
printl("");
}
// ========== 示例8: 高级点击方法 ==========
function demoAdvancedClickMethods() {
printl("【示例8】高级点击方法");
printl("说明:组合使用多种点击方法实现复杂操作");
try {
printl("方式1: 点击指定区域内的随机点");
function clickRandomInRegion(x1, y1, x2, y2) {
var randomX = x1 + Math.random() * (x2 - x1);
var randomY = y1 + Math.random() * (y2 - y1);
printl("点击随机点: (" + randomX.toFixed(2) + ", " + randomY.toFixed(2) + ")");
hid.clickPercent(randomX, randomY);
}
clickRandomInRegion(0.3, 0.3, 0.7, 0.7);
printl("✓ 区域内随机点击成功");
sleep(1000);
printl("方式2: 连续点击多个位置");
var clickPoints = [
[0.2, 0.2],
[0.5, 0.5],
[0.8, 0.8]
];
for (var i = 0; i < clickPoints.length; i++) {
printl("点击位置 " + (i + 1) + ": (" + clickPoints[i][0] + ", " + clickPoints[i][1] + ")");
hid.clickPercent(clickPoints[i][0], clickPoints[i][1]);
sleep(500);
}
printl("✓ 连续点击完成");
sleep(1000);
printl("方式3: 等待目标出现后点击");
function waitForTargetAndClick(targetText, maxWaitTime) {
var startTime = Date.now();
while (Date.now() - startTime < maxWaitTime) {
try {
var ocrResult = screen.ocr(0, 0, 1, 1);
var target = ocrResult.findIncludeText(targetText, [0, 0, 1, 1]);
if (target != null) {
printl("✓ 目标 '" + targetText + "' 已出现,点击");
target.clickRandom();
return true;
}
sleep(500);
} catch (e) {
printl("查找出错: " + e);
}
}
printl("✗ 超时,目标未出现");
return false;
}
waitForTargetAndClick("设置", 5000);
sleep(1000);
printl("方式4: 查找并点击最接近指定坐标的目标");
function findAndClickNearestTarget(cvFile, targetX, targetY) {
var detects = opencv.findImagesEx(cvFile);
if (detects == null || detects.length === 0) {
printl("未找到目标");
return false;
}
var nearestIndex = 0;
var minDistance = Number.MAX_VALUE;
for (var i = 0; i < detects.length; i++) {
var centerX = detects[i].x + detects[i].width / 2;
var centerY = detects[i].y + detects[i].height / 2;
var distance = Math.sqrt(Math.pow(centerX - targetX, 2) + Math.pow(centerY - targetY, 2));
if (distance < minDistance) {
minDistance = distance;
nearestIndex = i;
}
}
printl("找到最近的目标,距离: " + minDistance.toFixed(2));
detects[nearestIndex].clickRandom();
return true;
}
findAndClickNearestTarget('图色769598.cv', 500, 500);
sleep(1000);
printl("方式5: 批量点击所有匹配目标");
function clickAllTargets(detects) {
if (detects == null || detects.length === 0) {
printl("没有可点击的目标");
return;
}
printl("准备点击 " + detects.length + " 个目标");
for (var i = 0; i < detects.length; i++) {
printl("点击目标 " + (i + 1) + ": x=" + detects[i].x + ", y=" + detects[i].y);
detects[i].clickRandom();
sleep(300);
}
printl("✓ 所有目标点击完成");
}
var allDetects = opencv.findImagesEx('图色769598.cv');
if (allDetects != null && allDetects.length > 0) {
clickAllTargets(allDetects);
}
} catch (e) {
printl("错误: " + e);
}
printl("");
}
// ========== 示例9: 实用点击场景 ==========
function demoPracticalClickExamples() {
printl("【示例9】实用点击场景");
printl("说明:实际应用中的点击操作场景");
try {
printl("场景1: 3x3区域点击网格");
for (var y = 0; y < 3; y++) {
for (var x = 0; x < 3; x++) {
var clickX = 0.25 + x * 0.25;
var clickY = 0.25 + y * 0.25;
printl("点击区域 (" + x + "," + y + ") - 坐标 (" + clickX.toFixed(2) + "," + clickY.toFixed(2) + ")");
hid.clickPercent(clickX, clickY);
sleep(300);
}
}
printl("✓ 3x3网格点击完成");
sleep(1000);
printl("场景2: 随机点击屏幕");
for (var i = 0; i < 5; i++) {
var randomX = Math.random();
var randomY = Math.random();
printl("随机点击 " + (i + 1) + "/5: (" + randomX.toFixed(2) + ", " + randomY.toFixed(2) + ")");
hid.clickPercent(randomX, randomY);
sleep(800);
}
printl("✓ 随机点击完成");
sleep(1000);
printl("场景3: 边缘点击(测试边界)");
try {
var edgePoints = [
[0.1, 0.1], // 左上
[0.9, 0.1], // 右上
[0.1, 0.9], // 左下
[0.9, 0.9] // 右下
];
for (var i = 0; i < edgePoints.length; i++) {
printl("点击边缘点 " + (i + 1) + ": (" + edgePoints[i][0] + ", " + edgePoints[i][1] + ")");
hid.clickPercent(edgePoints[i][0], edgePoints[i][1]);
sleep(500);
}
printl("✓ 边缘点击完成");
} catch (e) {
printl("边缘点击出错: " + e);
}
sleep(1000);
printl("场景4: OCR锁定后多次点击");
try {
OCR.lockOCR();
printl("OCR结果已锁定");
var image = screen.screenShotFull();
var result1 = image.ocr(0, 0, 1, 1);
var target1 = result1.findIncludeText("设置", [0, 0, 1, 1]);
if (target1 != null) {
target1.clickRandom();
printl("✓ 第一次点击成功");
}
var result2 = image.ocr(0, 0, 1, 1);
var target2 = result2.findIncludeText("日志", [0, 0, 1, 1]);
if (target2 != null) {
target2.clickRandom();
printl("✓ 第二次点击成功");
}
image.close();
OCR.unLock();
printl("OCR结果已解锁");
} catch (e) {
printl("OCR锁定点击出错: " + e);
try {
OCR.unLock();
} catch (unlockError) {
printl("解锁错误: " + unlockError);
}
}
sleep(1000);
printl("场景5: 综合自动化流程");
try {
printl("步骤1: 查找并点击 '设置'");
var ocrResult1 = screen.ocr(0, 0, 1, 1);
var settingTarget = ocrResult1.findIncludeText("设置", [0, 0, 1, 1]);
if (settingTarget != null) {
settingTarget.clickRandom();
printl("✓ 点击设置成功");
sleep(2000);
printl("步骤2: 查找并点击 '日志'");
var ocrResult2 = screen.ocr(0, 0, 1, 1);
var logTarget = ocrResult2.findIncludeText("日志", [0, 0, 1, 1]);
if (logTarget != null) {
logTarget.clickRandom();
printl("✓ 点击日志成功");
} else {
printl("未找到文本 '日志'");
}
} else {
printl("未找到包含 '设置' 的文本");
}
printl("✓ 综合流程完成");
} catch (e) {
printl("综合流程错误: " + e);
}
} catch (e) {
printl("错误: " + e);
}
printl("");
}
// ========== 辅助函数 ==========
function getTargetCenter(detect) {
if (detect == null) {
return null;
}
return {
x: detect.x + detect.width / 2,
y: detect.y + detect.height / 2
};
}
function isTargetInRegion(detect, region) {
if (detect == null) {
return false;
}
var centerX = detect.x + detect.width / 2;
var centerY = detect.y + detect.height / 2;
return centerX >= region[0] && centerX <= region[2] &&
centerY >= region[1] && centerY <= region[3];
}
function safeFindImage(cvFile, maxRetries) {
for (var retry = 0; retry < maxRetries; retry++) {
try {
printl("查找图片: " + cvFile + " (尝试 " + (retry + 1) + "/" + maxRetries + ")");
var detects = opencv.findImagesEx(cvFile);
if (detects != null && detects.length > 0) {
printl("✓ 找到目标");
return detects;
}
if (retry < maxRetries - 1) {
printl("未找到,等待重试...");
sleep(1000);
}
} catch (error) {
printl("查找出错: " + error);
if (retry < maxRetries - 1) {
sleep(2000);
}
}
}
printl("✗ 未找到图片: " + cvFile);
return null;
}
// ========== 方法总结 ==========
function printMethodSummary() {
printl("\n========== 点击方法总结 ==========");
printl("\n【HID点击方法】");
printl("1. hid.click(x, y) - 在指定坐标位置点击");
printl("2. hid.clickPercent(xPercent, yPercent) - 在屏幕百分比位置点击");
printl("3. hid.doubleClick(x, y) - 在指定坐标位置双击");
printl("4. hid.doubleClickPercent(xPercent, yPercent) - 在屏幕百分比位置双击");
printl("\n【OCR点击方法】");
printl("1. target.clickRandom() - 在OCR识别到的文本区域内随机点击");
printl("2. 通过计算中心点后使用hid.click()点击 - 精确点击文本中心");
printl("\n【找图点击方法】");
printl("1. detects[i].clickRandom() - 在找到的图片区域内随机点击");
printl("2. opencv.findImagesEx() - 查找单个图片");
printl("3. opencv.findImages() - 查找多个图片");
printl("4. opencv.templateMatch() - 模板匹配查找");
printl("\n【UI组件点击方法】");
printl("1. button.onClick(callback) - 按钮点击事件");
printl("2. checkBox.onClick(callback) - 复选框点击事件");
printl("\n【鼠标操作方法】");
printl("1. hid.mouseDown() - 鼠标按下");
printl("2. hid.mouseUp() - 鼠标抬起");
printl("3. hid.mouseMove(x, y) - 移动鼠标相对位置");
printl("4. hid.mouseHome() - 鼠标回到主页");
printl("5. hid.moveToRealPoint(x, y) - 移动到绝对坐标");
printl("\n【高级点击方法】");
printl("1. 区域内随机点击 - 在指定区域内随机选择位置点击");
printl("2. 连续点击多个位置 - 按顺序点击多个坐标点");
printl("3. 等待目标出现后点击 - 轮询查找目标直到超时");
printl("4. 查找并点击最近目标 - 计算距离选择最近的目标点击");
printl("5. 批量点击所有匹配目标 - 遍历所有找到的目标并点击");
printl("\n【实用场景】");
printl("1. 3x3区域点击网格 - 测试屏幕不同区域");
printl("2. 随机点击屏幕 - 模拟用户随机操作");
printl("3. 边缘点击 - 测试边界区域");
printl("4. OCR锁定后多次点击 - 提高效率避免重复识别");
printl("5. 综合自动化流程 - 模拟实际应用操作流程");
printl("\n========== 方法总结完毕 ==========\n");
}
// 执行主函数
main();
// 打印方法总结
printMethodSummary();
复制代码
欢迎光临 自动发帖软件 (http://www.fatiegongju.com/)
Powered by Discuz! X3.2