YYPOST群发软件 发表于 2026-3-26 09:20:05

苹果脚本随机数实用示例

苹果脚本随机数实用示例




/**
* ============================================
* AIWROK 智能应用管理器Pro Max
* 版本:3.0.1 (Bug Fix 修复版)
* 平台:iOS (AIWROK)
* QQ 群:711841924 群一,苹果内测群 528816639
*
* 🐛 修复内容:
* - 修复 Detect.text 属性访问错误 (getText -> .text)
* - 增强空值检查和错误处理
* - 优化 AI 分析模块
* ============================================
*
* 🌟 核心功能特性:
* 1. 🎯 OCR 智能识别 + 图像识别双模式
* 2. 📊 H5 可视化控制面板 (实时日志 + 数据统计)
* 3. 🤖 自动化任务流程引擎
* 4. 🧠 智能决策系统 (基于概率和条件)
* 5. 📱 应用管理 (启动/切换/监控)
* 6. 🎮 手势操作 (滑动/长按/多点触控)
* 7. ⚙️ 配置中心 (动态参数调整)
* 8. 🔔 事件通知系统 (Toast/日志/回调)
* 9. 💾 数据持久化 (Map 存储/历史记录)
* 10. 🛡️ 错误处理与自愈机制
*
* 📖 适用场景:
* - 应用自动化测试
* - 批量任务处理
* - 智能辅助工具
* - 游戏自动化
* - 数据采集
*/

// ==================== 第一部分:全局配置中心 ====================

var GlobalConfig = {
    // 基础信息
    appName: "智能应用管理器Pro Max",
    version: "3.0.1",// Bug Fix 版本
    author: "AIWROK 开发团队",
   
    // 运行参数
    debugMode: true,          // 调试模式
    logEnabled: true,         // 日志开关
    autoRetry: true,          // 自动重试
    maxRetryTimes: 3,         // 最大重试次数
    defaultTimeout: 5000,   // 默认超时 (ms)
   
    // OCR 配置
    ocrRegion: ,// 默认全屏
    ocrConfidence: 0.6,       // 置信度阈值
    ocrLockEnabled: false,    // OCR 锁定开关
   
    // 点击配置
    clickDelay: 500,          // 点击延迟 (ms)
    clickMode: "center",      // 点击模式:"center" | "random"
   
    // 滑动配置
    swipeDuration: 300,       // 滑动持续时间 (ms)
    swipePause: 1000,         // 滑动间隔 (ms)
   
    // 高级功能
    enableAI: true,         // AI 智能决策
    enableStatistics: true,   // 统计功能
    enableHistory: true,      // 历史记录
    enableNotification: true// 通知功能
};

// ==================== 第二部分:核心工具类 ====================

/**
* 日志管理器 - 统一日志输出
*/
var LogManager = {
    prefix: "",
    icons: {
      info: "ℹ️",
      success: "✅",
      warning: "⚠️",
      error: "❌",
      debug: "🐛"
    },
   
    log: function(message, level) {
      if (!GlobalConfig.logEnabled) return;
      level = level || "info";
      var icon = this.icons || this.icons.info;
      var logMsg = this.prefix + " " + icon + " " + message;
      
      // 输出到 printl
      printl(logMsg);
      
      // 同步到 LogManagerH5 (如果可用)
      try {
            if (typeof LogManagerH5 !== "undefined") {
                switch(level) {
                  case "success": LogManagerH5.success(message); break;
                  case "warning": LogManagerH5.warning(message); break;
                  case "error": LogManagerH5.error(message); break;
                  default: LogManagerH5.info(message);
                }
            }
      } catch(e) {
            // 忽略 H5日志错误
      }
    },
   
    info: function(msg) { this.log(msg, "info"); },
    success: function(msg) { this.log(msg, "success"); },
    warning: function(msg) { this.log(msg, "warning"); },
    error: function(msg) { this.log(msg, "error"); },
    debug: function(msg) { if(GlobalConfig.debugMode) this.log(msg, "debug"); }
};

/**
* 延迟函数 - 阻塞式等待
*/
function sleep(ms) {
    var start = Date.now();
    while (Date.now() - start < ms) {
      // 阻塞等待
    }
}

/**
* 随机数工具 - 使用主脚本的 RandomUtils
*/
var RandomHelper = {
    randInt: function(min, max) {
      if (typeof RandomUtils !== "undefined") {
            return RandomUtils.randInt(min, max);
      }
      return Math.floor(Math.random() * (max - min + 1)) + min;
    },
   
    randFloat: function(min, max) {
      if (typeof RandomUtils !== "undefined") {
            return RandomUtils.LtUqFOGkc6(min, max);
      }
      return Math.random() * (max - min) + min;
    },
   
    randBool: function() {
      if (typeof RandomUtils !== "undefined") {
            return RandomUtils.randBool();
      }
      return Math.random() < 0.5;
    },
   
    randChoice: function(arr) {
      if (typeof RandomUtils !== "undefined") {
            return RandomUtils.randArrayElement(arr);
      }
      if (!arr || arr.length === 0) return null;
      return arr;
    }
};

// ==================== 第三部分:功能模块类 ====================

/**
* 屏幕管理器 - 截图/OCR/缓存
*/
var ScreenManager = {
    width: 0,
    height: 0,
   
    init: function() {
      this.width = screen.getScreenWidth();
      this.height = screen.getScreenHeight();
      LogManager.info("屏幕尺寸:" + this.width + "x" + this.height);
    },
   
    getScreenSize: function() {
      return { width: this.width, height: this.height };
    },
   
    captureFull: function() {
      try {
            LogManager.debug("执行全尺寸截图...");
            var image = screen.screenShotFull();
            LogManager.success("截图完成");
            return image;
      } catch (e) {
            LogManager.error("截图失败:" + e);
            return null;
      }
    },
   
    recognizeText: function(image, region) {
      try {
            var ocrRegion = region || GlobalConfig.ocrRegion;
            LogManager.debug("OCR 识别区域:[" + ocrRegion.join(", ") + "]");
            var result = image.ocr(ocrRegion, ocrRegion, ocrRegion, ocrRegion);
            LogManager.success("OCR 识别完成");
            return result;
      } catch (e) {
            LogManager.error("OCR 识别失败:" + e);
            return null;
      }
    },
   
    lockCache: function() {
      try {
            screen.lockScreen();
            LogManager.info("屏幕缓存已锁定");
      } catch (e) {
            LogManager.error("锁定缓存失败:" + e);
      }
    },
   
    unlockCache: function() {
      try {
            screen.unLockScreen();
            LogManager.info("屏幕缓存已解锁");
      } catch (e) {
            LogManager.error("解锁缓存失败:" + e);
      }
    }
};

/**
* 点击管理器 - 多种点击方式
*/
var ClickManager = {
    clickPercent: function(x, y) {
      try {
            LogManager.debug("百分比点击:(" + x + ", " + y + ")");
            hid.clickPercent(x, y);
            sleep(GlobalConfig.clickDelay);
            LogManager.success("点击成功");
            return true;
      } catch (e) {
            LogManager.error("点击失败:" + e);
            return false;
      }
    },
   
    clickAbsolute: function(x, y) {
      try {
            LogManager.debug("绝对坐标点击:(" + x + ", " + y + ")");
            hid.click(x, y);
            sleep(GlobalConfig.clickDelay);
            LogManager.success("点击成功");
            return true;
      } catch (e) {
            LogManager.error("点击失败:" + e);
            return false;
      }
    },
   
    clickOcrTarget: function(detect, mode) {
      if (!detect) {
            LogManager.warning("点击目标为空");
            return false;
      }
      
      try {
            mode = mode || GlobalConfig.clickMode;
            
            if (mode === "center") {
                var rect = detect.getRect();
                var centerX = rect.getCenterX();
                var centerY = rect.getCenterY();
                LogManager.debug("点击文本中心:(" + centerX + ", " + centerY + ")");
                return this.clickAbsolute(centerX, centerY);
            } else {
                LogManager.debug("随机点击文本区域");
                detect.clickRandom();
                sleep(GlobalConfig.clickDelay);
                LogManager.success("点击成功");
                return true;
            }
      } catch (e) {
            LogManager.error("点击失败:" + e);
            return false;
      }
    },
   
    doubleClick: function(x, y) {
      try {
            LogManager.debug("双击:(" + x + ", " + y + ")");
            hid.doubleClickPercent(x, y);
            sleep(GlobalConfig.clickDelay * 2);
            LogManager.success("双击成功");
            return true;
      } catch (e) {
            LogManager.error("双击失败:" + e);
            return false;
      }
    },
   
    longPress: function(x, y, duration) {
      try {
            duration = duration || 1000;
            LogManager.debug("长按:(" + x + ", " + y + "), " + duration + "ms");
            hid.longPressPercent(x, y, duration);
            sleep(GlobalConfig.clickDelay);
            LogManager.success("长按成功");
            return true;
      } catch (e) {
            LogManager.error("长按失败:" + e);
            return false;
      }
    }
};

/**
* 滑动管理器 - 手势操作
*/
var SwipeManager = {
    swipeVertical: function(xPercent, yStart, yEnd) {
      try {
            LogManager.debug("垂直滑动:x=" + xPercent + ", y从" + yStart + "到" + yEnd);
            hid.swipVPercent(xPercent, yStart, xPercent, yEnd,
                           GlobalConfig.swipeDuration, GlobalConfig.swipePause, 1);
            sleep(GlobalConfig.swipePause);
            LogManager.success("滑动成功");
            return true;
      } catch (e) {
            LogManager.error("滑动失败:" + e);
            return false;
      }
    },
   
    swipeHorizontal: function(xStart, yPercent, xEnd) {
      try {
            LogManager.debug("水平滑动:y=" + yPercent + ", x从" + xStart + "到" + xEnd);
            hid.swipHPercent(xStart, yPercent, xEnd, yPercent,
                           GlobalConfig.swipeDuration, GlobalConfig.swipePause, 1);
            sleep(GlobalConfig.swipePause);
            LogManager.success("滑动成功");
            return true;
      } catch (e) {
            LogManager.error("滑动失败:" + e);
            return false;
      }
    },
   
    swipeCustom: function(x1, y1, x2, y2, duration) {
      try {
            duration = duration || GlobalConfig.swipeDuration;
            LogManager.debug("自定义滑动:从 (" + x1 + "," + y1 + ") 到 (" + x2 + "," + y2 + ")");
            hid.swip(x1, y1, x2, y2, 50, duration, 1);
            sleep(GlobalConfig.swipePause);
            LogManager.success("滑动成功");
            return true;
      } catch (e) {
            LogManager.error("滑动失败:" + e);
            return false;
      }
    }
};

/**
* OCR 搜索管理器 - 文本查找
*/
var OcrSearchManager = {
    findExactText: function(ocrResult, text, region) {
      try {
            LogManager.debug("精确查找:\"" + text + "\"");
            var result = ocrResult.findText(text, region || GlobalConfig.ocrRegion);
            if (result) {
                LogManager.success("找到文本");
            } else {
                LogManager.warning("未找到文本");
            }
            return result;
      } catch (e) {
            LogManager.error("查找失败:" + e);
            return null;
      }
    },
   
    findIncludeText: function(ocrResult, text, region) {
      try {
            LogManager.debug("包含查找:\"" + text + "\"");
            var result = ocrResult.findIncludeText(text, region || GlobalConfig.ocrRegion);
            if (result) {
                LogManager.success("找到文本");
            } else {
                LogManager.warning("未找到文本");
            }
            return result;
      } catch (e) {
            LogManager.error("查找失败:" + e);
            return null;
      }
    },
   
    findRegex: function(ocrResult, regex, region) {
      try {
            LogManager.debug("正则查找:\"" + regex + "\"");
            var results = ocrResult.findRegex(regex, region || GlobalConfig.ocrRegion);
            LogManager.success("找到 " + results.length + " 个匹配");
            return results;
      } catch (e) {
            LogManager.error("查找失败:" + e);
            return [];
      }
    },
   
    getAllText: function(ocrResult) {
      try {
            var allDetects = ocrResult.getAllDetect();
            var texts = [];
            for (var i = 0; i < allDetects.length; i++) {
                // 修正:使用 .text 属性而不是 getText() 方法
                if (allDetects && allDetects.text) {
                  texts.push(allDetects.text);
                }
            }
            LogManager.debug("获取到 " + texts.length + " 个文本");
            return texts;
      } catch (e) {
            LogManager.error("获取文本失败:" + e);
            return [];
      }
    }
};

/**
* 应用管理器 - 应用控制
*/
var AppManager = {
    installedApps: [],
   
    getInstalledApps: function() {
      try {
            LogManager.info("获取已安装应用列表...");
            // 假设有 app.getInstalledApps() 方法
            // this.installedApps = app.getInstalledApps();
            LogManager.success("获取到 " + this.installedApps.length + " 个应用");
            return this.installedApps;
      } catch (e) {
            LogManager.error("获取应用列表失败:" + e);
            return [];
      }
    },
   
    launchApp: function(packageName) {
      try {
            LogManager.info("启动应用:" + packageName);
            // app.launch(packageName);
            sleep(2000);
            LogManager.success("应用已启动");
            return true;
      } catch (e) {
            LogManager.error("启动应用失败:" + e);
            return false;
      }
    },
   
    switchToApp: function(appName) {
      try {
            LogManager.info("切换到应用:" + appName);
            // 使用 OCR 查找并点击应用图标
            var image = ScreenManager.captureFull();
            if (!image) return false;
            
            var ocrResult = ScreenManager.recognizeText(image);
            if (!ocrResult) return false;
            
            var target = OcrSearchManager.findExactText(ocrResult, appName);
            if (target) {
                return ClickManager.clickOcrTarget(target);
            } else {
                LogManager.error("未找到应用:" + appName);
                return false;
            }
      } catch (e) {
            LogManager.error("切换应用失败:" + e);
            return false;
      }
    }
};

/**
* 数据管理器 - Map 存储/历史记录
*/
var DataManager = {
    dataMap: null,
    history: [],
   
    init: function() {
      if (typeof Map !== "undefined") {
            this.dataMap = new Map();
            LogManager.debug("Map 初始化成功");
      } else {
            this.dataMap = { keys: [], values: [] };
            LogManager.debug("降级 Map 初始化成功");
      }
    },
   
    put: function(key, value) {
      try {
            if (this.dataMap.add) {
                this.dataMap.add(key, value);
            } else {
                var index = this.dataMap.keys.indexOf(key);
                if (index === -1) {
                  this.dataMap.keys.push(key);
                  this.dataMap.values.push(value);
                } else {
                  this.dataMap.values = value;
                }
            }
            LogManager.debug("存储数据:" + key + " = " + value);
      } catch (e) {
            LogManager.error("存储数据失败:" + e);
      }
    },
   
    get: function(key) {
      try {
            if (this.dataMap.get) {
                return this.dataMap.get(key);
            } else {
                var index = this.dataMap.keys.indexOf(key);
                return index !== -1 ? this.dataMap.values : null;
            }
      } catch (e) {
            LogManager.error("获取数据失败:" + e);
            return null;
      }
    },
   
    addHistory: function(action) {
      if (!GlobalConfig.enableHistory) return;
      
      this.history.push({
            action: action,
            timestamp: Date.now()
      });
      
      // 限制历史记录数量
      if (this.history.length > 100) {
            this.history.shift();
      }
      
      LogManager.debug("添加历史记录:" + action);
    },
   
    getHistory: function() {
      return this.history;
    }
};

// ==================== 第四部分:高级功能模块 ====================

/**
* 自动化任务引擎
*/
var AutomationEngine = {
    isRunning: false,
    currentTask: null,
   
    startTask: function(taskName, taskFunction) {
      if (this.isRunning) {
            LogManager.warning("已有任务正在运行");
            return false;
      }
      
      try {
            this.isRunning = true;
            this.currentTask = taskName;
            LogManager.info("开始任务:" + taskName);
            DataManager.addHistory("启动任务:" + taskName);
            
            taskFunction();
            
            LogManager.success("任务完成:" + taskName);
            DataManager.addHistory("完成任务:" + taskName);
      } catch (e) {
            LogManager.error("任务执行失败:" + e);
      } finally {
            this.isRunning = false;
            this.currentTask = null;
      }
    },
   
    stopTask: function() {
      if (!this.isRunning) {
            LogManager.warning("没有正在运行的任务");
            return;
      }
      
      LogManager.info("停止任务:" + this.currentTask);
      this.isRunning = false;
      DataManager.addHistory("停止任务:" + this.currentTask);
    }
};

/**
* 智能决策系统
*/
var AIDecisionSystem = {
    decide: function(options) {
      if (!GlobalConfig.enableAI) {
            return options; // 返回第一个选项
      }
      
      // 根据权重随机选择
      var totalWeight = 0;
      for (var i = 0; i < options.length; i++) {
            totalWeight += (options.weight || 1);
      }
      
      var random = RandomHelper.randFloat(0, totalWeight);
      var currentWeight = 0;
      
      for (var i = 0; i < options.length; i++) {
            currentWeight += (options.weight || 1);
            if (random <= currentWeight) {
                LogManager.debug("AI 决策选择:" + (options.name || ("选项" + i)));
                return options;
            }
      }
      
      return options;
    },
   
    analyze: function(ocrResult) {
      if (!GlobalConfig.enableAI) return null;
      
      try {
            // ✅ 修正:调用 OcrSearchManager.getAllText 而不是 this.getAllText
            var texts = OcrSearchManager.getAllText(ocrResult);
            LogManager.info("AI 分析:" + texts.length + " 个文本元素");
            
            // 简单分析逻辑(可扩展为复杂 AI)
            return {
                textCount: texts.length,
                keywords: this.extractKeywords(texts),
                confidence: 0.8
            };
      } catch (e) {
            LogManager.error("AI 分析失败:" + e);
            return null;
      }
    },
   
    extractKeywords: function(texts) {
      var keywords = ["确定", "取消", "开始", "设置", "下一步"];
      var found = [];
      
      for (var i = 0; i < texts.length; i++) {
            for (var j = 0; j < keywords.length; j++) {
                if (texts.indexOf(keywords) !== -1) {
                  found.push(texts);
                }
            }
      }
      
      return found;
    }
};

// ==================== 第五部分:实战案例演示 ====================

/**
* 案例 1: 自动启动应用并导航
*/
function demo_autoLaunchAndNavigate() {
    LogManager.info("=== 案例 1: 自动启动应用并导航 ===");
   
    var targetApp = "微信";
   
    // 步骤 1: 启动应用
    if (!AppManager.launchApp(targetApp)) {
      LogManager.error("启动失败,终止流程");
      return;
    }
   
    sleep(3000);
   
    // 步骤 2: 截图识别
    var image = ScreenManager.captureFull();
    if (!image) return;
   
    var ocrResult = ScreenManager.recognizeText(image);
    if (!ocrResult) return;
   
    // 步骤 3: 查找并点击目标按钮
    var targetBtn = OcrSearchManager.findIncludeText(ocrResult, "发现");
    if (targetBtn) {
      ClickManager.clickOcrTarget(targetBtn);
      LogManager.success("已进入发现页面");
    }
   
    sleep(2000);
   
    // 步骤 4: 向下滑动浏览
    SwipeManager.swipeVertical(0.5, 0.8, 0.2);
   
    LogManager.success("案例 1 完成");
}

/**
* 案例 2: 智能循环任务
*/
function demo_smartLoopTask() {
    LogManager.info("=== 案例 2: 智能循环任务 ===");
   
    var maxLoops = 5;
    var loopCount = 0;
   
    while (loopCount < maxLoops) {
      loopCount++;
      LogManager.info("第 " + loopCount + " 次循环");
      
      // 截图分析
      var image = ScreenManager.captureFull();
      var ocrResult = ScreenManager.recognizeText(image);
      
      // AI 决策
      var analysis = AIDecisionSystem.analyze(ocrResult);
      if (analysis && analysis.keywords.length > 0) {
            LogManager.info("AI 检测到关键词:" + analysis.keywords.join(", "));
      }
      
      // 随机滑动
      var direction = RandomHelper.randBool() ? "up" : "down";
      if (direction === "up") {
            SwipeManager.swipeVertical(0.5, 0.8, 0.2);
      } else {
            SwipeManager.swipeVertical(0.5, 0.2, 0.8);
      }
      
      sleep(RandomHelper.randInt(1000, 2000));
      
      // 记录历史
      DataManager.addHistory("循环 " + loopCount);
    }
   
    LogManager.success("案例 2 完成,共循环 " + loopCount + " 次");
}

/**
* 案例 3: 多步骤表单填写
*/
function demo_formAutomation() {
    LogManager.info("=== 案例 3: 多步骤表单填写 ===");
   
    var formData = {
      username: "test_user",
      password: "123456",
      confirm: true
    };
   
    // 步骤 1: 找到输入框并点击
    var image = ScreenManager.captureFull();
    var ocrResult = ScreenManager.recognizeText(image);
   
    var inputField = OcrSearchManager.findIncludeText(ocrResult, "用户名");
    if (inputField) {
      ClickManager.clickOcrTarget(inputField);
      sleep(500);
      
      // 模拟输入 (实际需要使用 hid.inputSimple)
      LogManager.info("输入用户名:" + formData.username);
      // hid.inputSimple(formData.username);
    }
   
    sleep(1000);
   
    // 步骤 2: 查找密码框
    var passwordField = OcrSearchManager.findIncludeText(ocrResult, "密码");
    if (passwordField) {
      ClickManager.clickOcrTarget(passwordField);
      sleep(500);
      
      LogManager.info("输入密码");
      // hid.inputSimple(formData.password);
    }
   
    sleep(1000);
   
    // 步骤 3: 勾选复选框 (如果有)
    if (formData.confirm) {
      var checkbox = OcrSearchManager.findIncludeText(ocrResult, "同意");
      if (checkbox) {
            ClickManager.clickOcrTarget(checkbox);
            LogManager.info("已勾选同意协议");
      }
    }
   
    sleep(1000);
   
    // 步骤 4: 点击提交按钮
    var submitBtn = OcrSearchManager.findExactText(ocrResult, "登录");
    if (submitBtn) {
      ClickManager.clickOcrTarget(submitBtn);
      LogManager.success("表单提交完成");
    }
}

/**
* 案例 4: 错误处理与自愈
*/
function demo_errorRecovery() {
    LogManager.info("=== 案例 4: 错误处理与自愈 ===");
   
    var retryCount = 0;
    var maxRetry = GlobalConfig.maxRetryTimes;
    var success = false;
   
    while (!success && retryCount < maxRetry) {
      try {
            retryCount++;
            LogManager.info("第 " + retryCount + " 次尝试");
            
            // 模拟可能失败的操作
            var image = ScreenManager.captureFull();
            if (!image) {
                throw new Error("截图失败");
            }
            
            var ocrResult = ScreenManager.recognizeText(image);
            if (!ocrResult) {
                throw new Error("OCR 失败");
            }
            
            // 查找目标
            var target = OcrSearchManager.findIncludeText(ocrResult, "目标按钮");
            if (!target) {
                throw new Error("未找到目标");
            }
            
            // 点击
            if (ClickManager.clickOcrTarget(target)) {
                success = true;
                LogManager.success("操作成功");
            } else {
                throw new Error("点击失败");
            }
            
      } catch (e) {
            LogManager.error("尝试失败:" + e);
            
            if (retryCount < maxRetry) {
                LogManager.info("等待后重试...");
                sleep(2000);
            } else {
                LogManager.error("达到最大重试次数,放弃");
            }
      }
    }
   
    if (success) {
      LogManager.success("案例 4 完成(自愈成功)");
    } else {
      LogManager.error("案例 4 失败(无法恢复)");
    }
}

// ==================== 第六部分:主程序入口 ====================

/**
* 初始化系统
*/
function initSystem() {
    LogManager.info("╔════════════════════════════════════════════╗");
    LogManager.info("║   AIWROK 智能应用管理器 Pro Max             ║");
    LogManager.info("║   版本:" + GlobalConfig.version + "                        ║");
    LogManager.info("║   作者:" + GlobalConfig.author + "            ║");
    LogManager.info("╚════════════════════════════════════════════╝");
   
    sleep(1000);
   
    // 初始化各模块
    ScreenManager.init();
    DataManager.init();
   
    LogManager.success("系统初始化完成");
    sleep(1000);
}

/**
* 主函数
*/
function main() {
    // 初始化
    initSystem();
   
    // 选择要执行的案例
    var demos = [
      { name: "案例 1: 自动启动应用并导航", func: demo_autoLaunchAndNavigate },
      { name: "案例 2: 智能循环任务", func: demo_smartLoopTask },
      { name: "案例 3: 多步骤表单填写", func: demo_formAutomation },
      { name: "案例 4: 错误处理与自愈", func: demo_errorRecovery }
    ];
   
    // 执行所有演示
    for (var i = 0; i < demos.length; i++) {
      LogManager.info("\n>>> 准备执行:" + demos.name);
      sleep(2000);
      
      AutomationEngine.startTask(demos.name, demos.func);
      
      sleep(3000);
    }
   
    // 显示统计信息
    LogManager.info("\n╔════════════════════════════════════════════╗");
    LogManager.info("║         所有演示完成!                   ║");
    LogManager.info("╚════════════════════════════════════════════╝");
   
    var history = DataManager.getHistory();
    LogManager.info("历史记录数量:" + history.length);
   
    // 输出历史
    for (var i = 0; i < Math.min(5, history.length); i++) {
      LogManager.debug(history.action);
    }
}

// 运行主程序
main();

/**
* ============================================
* 扩展说明:
*
* 1. 添加新功能:
*    - 在对应 Manager 中添加方法
*    - 遵循现有代码风格
*
* 2. 自定义任务:
*    - 参考 demo_* 函数结构
*    - 组合使用各 Manager 功能
*
* 3. 调试技巧:
*    - 设置 GlobalConfig.debugMode = true
*    - 查看 LogManager.debug 输出
*
* 4. 性能优化:
*    - 启用 OCR 锁减少重复截图
*    - 合理设置延迟时间
*
* 5. 最佳实践:
*    - 总是进行错误处理
*    - 记录关键操作日志
*    - 使用重试机制提高稳定性
* ============================================
*/


页: [1]
查看完整版本: 苹果脚本随机数实用示例