YYPOST群发软件 发表于 昨天 06:49

苹果脚本示例7种不同的OCR识别和点击方法

苹果脚本示例7种不同的OCR识别和点击方法






// AIWROK苹果系统指定坐标点击综合示例
// 🍎交流QQ群711841924群一,苹果内测群,528816639

function sleep(ms) {
    var start = new Date().getTime();
    while (new Date().getTime() - start < ms) {
    }
}

function main() {
    printl("========== AIWROK苹果系统指定坐标点击综合示例 ==========\n");
   
    // 定义要操作的五个坐标点
    var points = [
      {x: 171, y: 359, name: "位置1"},
      {x: 358, y: 351, name: "位置2"},
      {x: 574, y: 353, name: "位置3"},
      {x: 375, y: 1084, name: "位置4"},
      {x: 580, y: 1081, name: "位置5"}
    ];
   
    printl("将要对以下五个坐标点进行各种点击操作演示:");
    for (var i = 0; i < points.length; i++) {
      printl(points.name + ": (" + points.x + ", " + points.y + ")");
    }
    printl("");

    demoDirectClick(points);         // 示例1: 直接点击方法
    demoPercentClick(points);          // 示例2: 百分比点击方法
    demoDoubleClick(points);         // 示例3: 双击方法
    demoMoveAndClick(points);          // 示例4: 移动后点击方法
    demoMouseUpDownClick(points);      // 示例5: 鼠标按下抬起点击
    demoRandomClickInArea(points);   // 示例6: 区域内随机点击
    demoAdvancedClickMethods(points);// 示例7: 高级点击方法
   
    printl("\n========== 所有示例执行完毕 ==========");
}

// ========== 示例1: 直接点击方法 ==========
function demoDirectClick(points) {
    printl("【示例1】直接点击方法");
    printl("说明:使用hid.click()直接在指定坐标位置点击\n");

    try {
      for (var i = 0; i < points.length; i++) {
            var point = points;
            printl(point.name + " - 绝对坐标点击: x=" + point.x + ", y=" + point.y);
            hid.click(point.x, point.y);
            printl("✓ " + point.name + " 点击成功");
            sleep(500); // 每次点击间隔0.5秒便于观察
      }
    } catch (e) {
      printl("错误: " + e);
    }
    printl("");
}

// ========== 示例2: 百分比点击方法 ==========
function demoPercentClick(points) {
    printl("【示例2】百分比点击方法");
    printl("说明:将绝对坐标转换为屏幕百分比后使用hid.clickPercent()点击\n");

    try {
      // 获取屏幕尺寸(假设标准iOS屏幕尺寸)
      var screenWidth = device.width || 750;
      var screenHeight = device.height || 1334;
      
      printl("屏幕尺寸: " + screenWidth + "x" + screenHeight);
      
      for (var i = 0; i < points.length; i++) {
            var point = points;
            
            // 计算百分比坐标
            var xPercent = point.x / screenWidth;
            var yPercent = point.y / screenHeight;
            
            printl(point.name + " - 百分比坐标: x=" + xPercent.toFixed(3) + ", y=" + yPercent.toFixed(3));
            hid.clickPercent(xPercent, yPercent);
            printl("✓ " + point.name + " 百分比点击成功");
            sleep(500);
      }
    } catch (e) {
      printl("错误: " + e);
    }
    printl("");
}

// ========== 示例3: 双击方法 ==========
function demoDoubleClick(points) {
    printl("【示例3】双击方法");
    printl("说明:使用hid.doubleClick()在指定坐标位置执行双击操作\n");

    try {
      for (var i = 0; i < points.length; i++) {
            var point = points;
            printl(point.name + " - 绝对坐标双击: x=" + point.x + ", y=" + point.y);
            hid.doubleClick(point.x, point.y);
            printl("✓ " + point.name + " 双击成功");
            sleep(800); // 双击间隔稍短一些
      }
    } catch (e) {
      printl("错误: " + e);
    }
    printl("");
}

// ========== 示例4: 移动后点击方法 ==========
function demoMoveAndClick(points) {
    printl("【示例4】移动后点击方法");
    printl("说明:先移动到目标位置再执行点击操作\n");

    try {
      for (var i = 0; i < points.length; i++) {
            var point = points;
            printl(point.name + " - 移动到坐标: x=" + point.x + ", y=" + point.y);
            hid.moveToRealPoint(point.x, point.y);
            sleep(500); // 等待移动完成
            
            printl("执行点击...");
            hid.mouseDown();
            sleep(50);// 短暂保持按下状态
            hid.mouseUp();
            printl("✓ " + point.name + " 移动后点击成功");
            sleep(500);
      }
    } catch (e) {
      printl("错误: " + e);
    }
    printl("");
}

// ========== 示例5: 鼠标按下抬起点击 ==========
function demoMouseUpDownClick(points) {
    printl("【示例5】鼠标按下抬起点击");
    printl("说明:使用mouseDown和mouseUp组合实现精确控制的点击\n");

    try {
      for (var i = 0; i < points.length; i++) {
            var point = points;
            printl(point.name + " - 准备点击: x=" + point.x + ", y=" + point.y);
            
            // 先移动到目标位置
            hid.moveToRealPoint(point.x, point.y);
            sleep(200);
            
            // 执行按下-抬起操作
            hid.mouseDown();
            sleep(100); // 控制按下持续时间
            hid.mouseUp();
            
            printl("✓ " + point.name + " 鼠标按下抬起点击成功");
            sleep(500);
      }
    } catch (e) {
      printl("错误: " + e);
    }
    printl("");
}

// ========== 示例6: 区域内随机点击 ==========
function demoRandomClickInArea(points) {
    printl("【示例6】区域内随机点击");
    printl("说明:在每个坐标点周围的小区域内进行随机点击\n");

    try {
      var radius = 20; // 随机范围半径
      
      for (var i = 0; i < points.length; i++) {
            var point = points;
            
            // 生成随机偏移量
            var randomX = point.x + (Math.random() * 2 - 1) * radius;
            var randomY = point.y + (Math.random() * 2 - 1) * radius;
            
            printl(point.name + " - 原始坐标: (" + point.x + ", " + point.y + ")");
            printl("随机点击坐标: (" + Math.round(randomX) + ", " + Math.round(randomY) + ")");
            
            hid.click(Math.round(randomX), Math.round(randomY));
            printl("✓ " + point.name + " 区域内随机点击成功");
            sleep(500);
      }
    } catch (e) {
      printl("错误: " + e);
    }
    printl("");
}

// ========== 示例7: 高级点击方法 ==========
function demoAdvancedClickMethods(points) {
    printl("【示例7】高级点击方法");
    printl("说明:组合多种技术实现更复杂的点击操作\n");

    try {
      printl("方式1: 连续快速点击同一位置");
      for (var i = 0; i < points.length; i++) {
            var point = points;
            printl(point.name + " - 执行3次快速点击");
            
            for (var j = 0; j < 3; j++) {
                hid.click(point.x, point.y);
                sleep(100); // 快速间隔
            }
            printl("✓ " + point.name + " 快速连击完成");
            sleep(500); // 减少间隔时间
      }
      
      sleep(1000);
      
      printl("方式2: 长按操作");
      for (var i = 0; i < points.length; i++) {
            var point = points;
            printl(point.name + " - 执行长按操作");
            
            hid.moveToRealPoint(point.x, point.y);
            sleep(100);
            hid.mouseDown();
            sleep(2000); // 长按2秒
            hid.mouseUp();
            
            printl("✓ " + point.name + " 长按操作完成");
            sleep(500); // 减少间隔时间
      }
      
      sleep(1000);
      
      printl("方式3: 带反馈的点击验证");
      for (var i = 0; i < points.length; i++) {
            var point = points;
            printl(point.name + " - 执行带验证的点击");
            
            // 记录点击前状态
            var beforeTime = new Date().getTime();
            
            // 执行点击(使用非阻塞方式)
            hid.moveToRealPoint(point.x, point.y);
            sleep(50);
            hid.mouseDown();
            sleep(30);
            hid.mouseUp();
            
            // 计算耗时
            var afterTime = new Date().getTime();
            var clickDuration = afterTime - beforeTime;
            
            printl("✓ " + point.name + " 点击耗时: " + clickDuration + "ms");
            sleep(500); // 减少等待时间
      }
      
    } catch (e) {
      printl("错误: " + e);
    }
    printl("");
}

// ========== 辅助函数 ==========

/**
* 安全地执行点击操作,包含错误处理
*/
function safeClick(x, y, description) {
    try {
      printl("执行点击: " + description);
      hid.click(x, y);
      printl("✓ 点击成功");
      return true;
    } catch (e) {
      printl("✗ 点击失败: " + e.message);
      return false;
    }
}

/**
* 批量执行相同的点击操作
*/
function batchClick(points, operationName, clickFunction) {
    printl("批量执行 " + operationName + " 操作");
    var successCount = 0;
   
    for (var i = 0; i < points.length; i++) {
      var point = points;
      if (clickFunction(point)) {
            successCount++;
      }
      sleep(500);
    }
   
    printl("批量操作完成,成功: " + successCount + "/" + points.length);
    return successCount === points.length;
}

// 执行主函数
main();



页: [1]
查看完整版本: 苹果脚本示例7种不同的OCR识别和点击方法