YYPOST群发软件 发表于 2026-4-3 09:48:42

AIWROK苹果脚本sleep方法综合实战示例




AIWROK苹果脚本sleep方法综合实战示例




/*
🍎交流 QQ 群 711841924 群一,苹果内测群,528816639
🍎睡眠类 方法综合实战示例
📝 版本:2026-V2.0
🎯 适用:AIWROK 苹果 iOS 自动化脚本
*/

// ============================================
// 📚 sleep 类方法完整说明
// ============================================

// 方法一:📌millisecond 毫秒级延迟
/*
类别      详情说明
方法功能   使程序暂停执行指定的毫秒数
方法签名   Promise<void> millisecond(Number ms)
返回值   Promise<void>(延迟完成的Promise对象)
参数       - Number ms:需要延迟的毫秒数
应用场景   - UI动画延迟
         - 点击间隔控制
         - OCR识别后等待
         - 短暂暂停操作
*/
// 示例:延迟10毫秒
sleep.millisecond(10);

// 方法二:&#128204;second 秒级延迟
/*
类别      详情说明
方法功能   使程序暂停执行指定的秒数
方法签名   Promise<void> second(Number s)
返回值   Promise<void>(延迟完成的Promise对象)
参数       - Number s:需要延迟的秒数
应用场景   - 页面加载等待
         - 任务进度提示
         - 长时间操作间隔
         - 网络请求等待
*/
// 示例:延迟10秒
sleep.second(10);


// ============================================
// &#127919; 实战场景一:快速点击自动化工具
// ============================================
function quickClickAutomation() {
    printl("=== &#127919; 实战场景一:快速点击自动化工具 ===");
   
    var clickCount = 0;
    var targetCount = 100;
    var clickInterval = 10; // 毫秒
   
    printl("开始快速点击,目标次数:" + targetCount);
    printl("点击间隔:" + clickInterval + "毫秒");
   
    // 移动到目标位置
    hid.moveToPercentPoint(0.4774, 0.7126, 0.4774, 0.7126);
   
    // 等待移动完成(使用毫秒级延迟)
    sleep.millisecond(500);
   
    // 执行快速点击
    for (let i = 0; i < targetCount; i++) {
      hid.mouseDown();
      hid.mouseUp();
      clickCount++;
      
      // 使用毫秒级延迟控制点击间隔
      if (i < targetCount - 1) {
            sleep.millisecond(clickInterval);
      }
    }
   
    printl("✅ 点击完成,共执行 " + clickCount + " 次");
}


// ============================================
// &#127919; 实战场景二:OCR识别与点击流程
// ============================================
function ocrClickWorkflow() {
    printl("=== &#127919; 实战场景二:OCR识别与点击流程 ===");
   
    try {
      // 步骤1:执行OCR识别
      printl("步骤1:开始OCR识别...");
      var ocrResult = screen.ocr(0, 0, 1, 1);
      var allDetects = ocrResult.getAllDetect();
      
      printl("✓ OCR识别完成,检测到 " + allDetects.length + " 个目标");
      
      // 短暂延迟,确保识别结果稳定
      sleep.millisecond(200);
      
      // 步骤2:查找目标文本
      printl("步骤2:查找目标文本...");
      for (var i = 0; i < allDetects.length; i++) {
            var detectObj = allDetects;
            var text = detectObj.text();
            
            if (text && text.indexOf("收益") !== -1) {
                printl("✓ 找到目标:'" + text + "'");
               
                // 点击目标
                detectObj.click();
               
                // 等待点击效果显示
                sleep.millisecond(800);
               
                // 步骤3:在下方区域查找次级目标
                printl("步骤3:在下方区域查找次级目标...");
                var rect = detectObj.getRect();
                var coords = rect.toString().replace("矩形区域:", "").trim().split(", ");
                var bottom = parseFloat(coords) + 0.05;
               
                var settingTarget = ocrResult.findIncludeText("明日再来", , 1, bottom]);
               
                if (settingTarget) {
                  printl("✓ 找到次级目标");
                  settingTarget.click();
                  
                  // 等待操作完成
                  sleep.second(2);
                }
               
                break;
            }
      }
      
      printl("✅ OCR工作流程完成");
      
    } catch (e) {
      printl("❌ 执行出错:" + e.message);
    }
}


// ============================================
// &#127919; 实战场景三:滑动操作序列
// ============================================
function swipeSequenceAutomation() {
    printl("=== &#127919; 实战场景三:滑动操作序列 ===");
   
    var swipeCount = 0;
    var maxSwipes = 5;
   
    printl("开始滑动序列,最大次数:" + maxSwipes);
   
    while (swipeCount < maxSwipes) {
      swipeCount++;
      printl("执行第 " + swipeCount + " 次滑动...");
      
      // 上滑操作
      // 正确参数顺序:startXPercent, startYPercent, endXPercent, endYPercent, swipTime, step
      hid.swipVPercent(0.5, 0.8, 0.5, 0.2, 500, 1);
      
      // 每次滑动后等待,让屏幕内容稳定
      sleep.millisecond(1000);
      
      // 尝试OCR识别目标
      var ocrResult = screen.ocr(0, 0, 1, 1);
      var target = ocrResult.findIncludeText("加载更多");
      
      if (target) {
            printl("✓ 找到'加载更多',点击加载");
            target.click();
            
            // 等待内容加载
            sleep.second(2);
      }
    }
   
    printl("✅ 滑动序列完成,共执行 " + swipeCount + " 次");
}


// ============================================
// &#127919; 实战场景四:多任务调度系统
// ============================================
function multiTaskScheduler() {
    printl("=== &#127919; 实战场景四:多任务调度系统 ===");
   
    var tasks = [
      { name: "任务1:检查更新", delay: 1000, action: checkUpdate },
      { name: "任务2:清理缓存", delay: 2000, action: clearCache },
      { name: "任务3:同步数据", delay: 3000, action: syncData }
    ];
   
    printl("开始执行多任务调度...");
   
    for (var i = 0; i < tasks.length; i++) {
      var task = tasks;
      printl("执行 " + task.name);
      
      // 执行任务
      task.action();
      
      // 根据任务延迟等待
      sleep.millisecond(task.delay);
      
      printl("✓ " + task.name + " 完成");
    }
   
    printl("✅ 所有任务执行完成");
}

// 辅助函数
function checkUpdate() {
    printl("正在检查更新...");
    sleep.millisecond(500);
}

function clearCache() {
    printl("正在清理缓存...");
    sleep.millisecond(800);
}

function syncData() {
    printl("正在同步数据...");
    sleep.millisecond(1200);
}


// ============================================
// &#127919; 实战场景五:智能等待与重试机制
// ============================================
function smartWaitRetry() {
    printl("=== &#127919; 实战场景五:智能等待与重试机制 ===");
   
    var maxRetries = 3;
    var retryDelay = 2000; // 2秒
   
    printl("开始智能等待与重试,最大重试次数:" + maxRetries);
   
    for (var attempt = 1; attempt <= maxRetries; attempt++) {
      printl("第 " + attempt + " 次尝试...");
      
      // 尝试查找目标
      var ocrResult = screen.ocr(0, 0, 1, 1);
      var target = ocrResult.findIncludeText("确认");
      
      if (target) {
            printl("✓ 找到目标,执行点击");
            target.click();
            
            // 等待操作完成
            sleep.millisecond(1500);
            
            printl("✅ 操作成功完成");
            return;
      } else {
            printl("× 未找到目标");
            
            if (attempt < maxRetries) {
                printl("等待 " + (retryDelay / 1000) + " 秒后重试...");
                sleep.second(retryDelay / 1000);
            }
      }
    }
   
    printl("❌ 达到最大重试次数,操作失败");
}


// ============================================
// &#127919; 实战场景六:进度条模拟与反馈
// ============================================
function progressBarSimulation() {
    printl("=== &#127919; 实战场景六:进度条模拟与反馈 ===");
   
    var totalSteps = 10;
    var stepDelay = 500; // 每步500毫秒
   
    printl("开始执行任务,总步骤:" + totalSteps);
   
    for (var step = 1; step <= totalSteps; step++) {
      var progress = Math.round((step / totalSteps) * 100);
      
      // 显示进度提示
      toast.show("任务执行中 (" + progress + "%)");
      printl("进度:" + progress + "% - 步骤 " + step + "/" + totalSteps);
      
      // 执行任务步骤
      performTaskStep(step);
      
      // 等待指定时间
      sleep.millisecond(stepDelay);
    }
   
    toast.show("任务已完成");
    printl("✅ 所有步骤执行完成");
}

function performTaskStep(step) {
    // 模拟任务步骤
    sleep.millisecond(100);
}


// ============================================
// &#127919; 实战场景七:组合操作流程
// ============================================
function combinedWorkflow() {
    printl("=== &#127919; 实战场景七:组合操作流程 ===");
   
    // 阶段1:初始化
    printl("阶段1:初始化...");
    sleep.millisecond(500);
   
    // 阶段2:滑动到目标区域
    printl("阶段2:滑动到目标区域...");
    // 正确参数顺序:startXPercent, startYPercent, endXPercent, endYPercent, swipTime, step
    hid.swipVPercent(0.5, 0.8, 0.5, 0.2, 800, 1);
    sleep.millisecond(1000);
   
    // 阶段3:OCR识别
    printl("阶段3:OCR识别目标...");
    var ocrResult = screen.ocr(0, 0, 1, 1);
    var target = ocrResult.findIncludeText("开始");
   
    if (target) {
      printl("✓ 找到目标");
      
      // 阶段4:点击目标
      printl("阶段4:点击目标...");
      target.click();
      sleep.millisecond(800);
      
      // 阶段5:等待页面加载
      printl("阶段5:等待页面加载...");
      sleep.second(3);
      
      // 阶段6:执行后续操作
      printl("阶段6:执行后续操作...");
      performSecondaryActions();
      
      printl("✅ 组合流程完成");
    } else {
      printl("❌ 未找到目标,流程终止");
    }
}

function performSecondaryActions() {
    // 执行次要操作
    sleep.millisecond(500);
    hid.moveToPercentPoint(0.5, 0.5, 0.5, 0.5);
    sleep.millisecond(300);
    hid.mouseDown();
    hid.mouseUp();
    sleep.millisecond(500);
}


// ============================================
// &#127919; 实战场景八:性能优化示例
// ============================================
function performanceOptimization() {
    printl("=== &#127919; 实战场景八:性能优化示例 ===");
   
    // 对比:使用不同延迟时间的性能差异
   
    printl("测试1:使用10毫秒延迟");
    var start1 = new Date().getTime();
    for (let i = 0; i < 100; i++) {
      sleep.millisecond(10);
    }
    var end1 = new Date().getTime();
    printl("耗时:" + (end1 - start1) + "毫秒");
   
    printl("测试2:使用100毫秒延迟");
    var start2 = new Date().getTime();
    for (let i = 0; i < 10; i++) {
      sleep.millisecond(100);
    }
    var end2 = new Date().getTime();
    printl("耗时:" + (end2 - start2) + "毫秒");
   
    printl("测试3:使用1秒延迟");
    var start3 = new Date().getTime();
    for (let i = 0; i < 3; i++) {
      sleep.second(1);
    }
    var end3 = new Date().getTime();
    printl("耗时:" + (end3 - start3) + "毫秒");
   
    printl("✅ 性能测试完成");
}


// ============================================
// &#128202; 使用建议与最佳实践
// ============================================
/*
&#127822; sleep 方法使用建议:

1. 毫秒级延迟 (millisecond):
   - 适用场景:UI动画、点击间隔、OCR后短暂等待
   - 推荐值:10-1000毫秒
   - 注意:过短的延迟可能导致操作不稳定

2. 秒级延迟 (second):
   - 适用场景:页面加载、网络请求、长时间等待
   - 推荐值:1-10秒
   - 注意:过长的延迟会影响用户体验

3. 组合使用:
   - 在复杂流程中,合理组合使用毫秒和秒级延迟
   - 根据实际需要调整延迟时间
   - 使用重试机制提高稳定性

4. 性能优化:
   - 避免不必要的延迟
   - 在循环中谨慎使用延迟
   - 考虑使用异步操作替代长时间延迟

5. 调试技巧:
   - 在关键步骤添加printl日志
   - 使用toast.show显示进度
   - 逐步调整延迟时间找到最佳值
*/


// ============================================
// &#128640; 主函数:运行所有示例
// ============================================
function main() {
    printl("&#127822; AIWROK 睡眠类方法综合实战示例");
    printl("====================================");
   
    // 运行各个实战场景
    quickClickAutomation();
    sleep.second(1);
   
    ocrClickWorkflow();
    sleep.second(1);
   
    swipeSequenceAutomation();
    sleep.second(1);
   
    multiTaskScheduler();
    sleep.second(1);
   
    smartWaitRetry();
    sleep.second(1);
   
    progressBarSimulation();
    sleep.second(1);
   
    combinedWorkflow();
    sleep.second(1);
   
    performanceOptimization();
   
    printl("====================================");
    printl("✅ 所有示例执行完成");
}

// 运行所有示例
main();


页: [1]
查看完整版本: AIWROK苹果脚本sleep方法综合实战示例