# 易编精灵完整函数文档 > 本文件供搜索引擎、AI 助手和开发者直接读取,包含易编精灵当前 282 个真实函数。 易编精灵是 Android 本地自动化脚本开发工具,不是 OCR 在线接口站。本文中的 API 供易编精灵项目内的 Lua 5.4 脚本或可视化流程调用,不是 HTTP 接口。 类型缩写:整=integer,浮=number,字=string,布=boolean,图=image,任=any。函数签名中的问号表示参数可以省略。 ## 界面函数 / 页面管理 ### 切换主页面 `UI.switchMainPage(pageName: string)` 切换主界面使用的页面;页面名称可省略 .json 后缀,主界面隐藏时不会自动显示。 示例:UI.switchMainPage("主页面")。 参数: - 1. `pageName`(字):目标页面名称,可省略 .json 后缀。示例:主页面 返回值:无。 ### 恢复原始页面 `UI.resetPage(pageName: string)` 丢弃指定页面尚未保存的运行态修改,重新加载界面/页面目录中的原始 JSON。 参数: - 1. `pageName`(字):目标页面名称,可省略 .json 后缀。示例:主页面 返回值:无。 ### 保存页面配置 `UI.saveConfig(configName: string, pageName: string)` 把页面当前状态保存到界面/配置目录;页面名称留空时保存当前页面,不修改原始页面文件。 参数: - 1. `configName`(字):配置文件名称,可省略 .json 后缀。示例:默认配置 - 2. `pageName`(字):目标页面名称,可省略 .json 后缀。示例:主页面;可省略,默认 "" 返回值:无。 ### 加载页面配置 `UI.loadConfig(configName: string, pageName: string)` 从界面/配置目录读取完整配置并应用到目标页面;页面名称留空时应用到当前页面,已显示页面会立即刷新。 参数: - 1. `configName`(字):配置文件名称,可省略 .json 后缀。示例:默认配置 - 2. `pageName`(字):目标页面名称,可省略 .json 后缀。示例:主页面;可省略,默认 "" 返回值:无。 ### 删除页面配置 `UI.deleteConfig(configName: string)` 删除界面/配置目录中的指定 JSON 文件。 参数: - 1. `configName`(字):配置文件名称,可省略 .json 后缀。示例:默认配置 返回值:无。 ## 界面函数 / 通用属性 ### 获取控件X坐标 `UI.x(layoutName: string, id: string): integer` 获取运行态控件的逻辑 X 坐标。 参数: - 1. `layoutName`(字):目标布局名称。示例:主页面 - 2. `id`(字):目标控件 ID。示例:id_start 返回值(至少接收一个返回值): - 1. `result`(整):返回整数;控件不存在或读取失败返回 0。 ### 设置控件X坐标 `UI.setX(layoutName: string, id: string, x: integer)` 设置运行态控件的逻辑 X 坐标。 参数: - 1. `layoutName`(字):目标布局名称。示例:主页面 - 2. `id`(字):目标控件 ID。示例:id_start - 3. `x`(整):控件左上角的逻辑 X 坐标。 返回值:无。 ### 获取控件Y坐标 `UI.y(layoutName: string, id: string): integer` 获取运行态控件的逻辑 Y 坐标。 参数: - 1. `layoutName`(字):目标布局名称。示例:主页面 - 2. `id`(字):目标控件 ID。示例:id_start 返回值(至少接收一个返回值): - 1. `result`(整):返回整数;控件不存在或读取失败返回 0。 ### 设置控件Y坐标 `UI.setY(layoutName: string, id: string, y: integer)` 设置运行态控件的逻辑 Y 坐标。 参数: - 1. `layoutName`(字):目标布局名称。示例:主页面 - 2. `id`(字):目标控件 ID。示例:id_start - 3. `y`(整):控件左上角的逻辑 Y 坐标。 返回值:无。 ### 获取控件宽度 `UI.w(layoutName: string, id: string): integer` 获取运行态控件的逻辑宽度。 参数: - 1. `layoutName`(字):目标布局名称。示例:主页面 - 2. `id`(字):目标控件 ID。示例:id_start 返回值(至少接收一个返回值): - 1. `result`(整):返回整数;控件不存在或读取失败返回 0。 ### 设置控件宽度 `UI.setW(layoutName: string, id: string, width: integer)` 设置运行态控件的逻辑宽度。 参数: - 1. `layoutName`(字):目标布局名称。示例:主页面 - 2. `id`(字):目标控件 ID。示例:id_start - 3. `width`(整):控件的逻辑宽度,不能小于 0。 返回值:无。 ### 获取控件高度 `UI.h(layoutName: string, id: string): integer` 获取运行态控件的逻辑高度。 参数: - 1. `layoutName`(字):目标布局名称。示例:主页面 - 2. `id`(字):目标控件 ID。示例:id_start 返回值(至少接收一个返回值): - 1. `result`(整):返回整数;控件不存在或读取失败返回 0。 ### 设置控件高度 `UI.setH(layoutName: string, id: string, height: integer)` 设置运行态控件的逻辑高度。 参数: - 1. `layoutName`(字):目标布局名称。示例:主页面 - 2. `id`(字):目标控件 ID。示例:id_start - 3. `height`(整):控件的逻辑高度,不能小于 0。 返回值:无。 ### 获取控件层级 `UI.z(layoutName: string, id: string): integer` 获取运行态控件的层级 z。 参数: - 1. `layoutName`(字):目标布局名称。示例:主页面 - 2. `id`(字):目标控件 ID。示例:id_start 返回值(至少接收一个返回值): - 1. `result`(整):返回整数;控件不存在或读取失败返回 0。 ### 设置控件层级 `UI.setZ(layoutName: string, id: string, zIndex: integer)` 设置运行态控件的层级 z。 参数: - 1. `layoutName`(字):目标布局名称。示例:主页面 - 2. `id`(字):目标控件 ID。示例:id_start - 3. `zIndex`(整):控件层级;数值越大越靠上显示。 返回值:无。 ### 获取可见状态 `UI.visible(layoutName: string, id: string): integer` 获取控件是否可见,返回 1 或 0。 参数: - 1. `layoutName`(字):目标布局名称。示例:主页面 - 2. `id`(字):目标控件 ID。示例:id_start 返回值(至少接收一个返回值): - 1. `result`(整):返回整数,1 表示可见,0 表示隐藏或控件不存在。 ### 设置可见状态 `UI.setVisible(layoutName: string, id: string, visible: integer)` 设置控件是否可见,1 为可见,0 为隐藏。 参数: - 1. `layoutName`(字):目标布局名称。示例:主页面 - 2. `id`(字):目标控件 ID。示例:id_start - 3. `visible`(整):1 显示控件,0 隐藏控件。 返回值:无。 ### 获取可用状态 `UI.enabled(layoutName: string, id: string): integer` 获取控件是否可用,返回 1 或 0。 参数: - 1. `layoutName`(字):目标布局名称。示例:主页面 - 2. `id`(字):目标控件 ID。示例:id_start 返回值(至少接收一个返回值): - 1. `result`(整):返回整数,1 表示可用,0 表示禁用或控件不存在。 ### 设置可用状态 `UI.setEnabled(layoutName: string, id: string, enabled: integer)` 设置控件是否可用,1 为可用,0 为禁用。 参数: - 1. `layoutName`(字):目标布局名称。示例:主页面 - 2. `id`(字):目标控件 ID。示例:id_start - 3. `enabled`(整):1 允许操作控件,0 禁用控件。 返回值:无。 ### 设置控件背景色 `UI.setBackgroundColor(layoutName: string, id: string, color: string)` 设置控件背景颜色,例如 #FF3A6EFF;参数行可点击“选择颜色”。 参数: - 1. `layoutName`(字):目标布局名称。示例:主页面 - 2. `id`(字):目标控件 ID。示例:id_start - 3. `color`(字):背景颜色,格式 #AARRGGBB。示例:#FF3A6EFF 返回值:无。 ### 设置控件背景图片 `UI.setBackgroundImage(layoutName: string, id: string, imagePath: string)` 设置设备绝对路径中的背景图片;传空字符可清除。 参数: - 1. `layoutName`(字):目标布局名称。示例:主页面 - 2. `id`(字):目标控件 ID。示例:id_start - 3. `imagePath`(字):图片绝对路径。示例:/sdcard/背景.png;传空字符可清除 返回值:无。 ## 界面函数 / 标签 ### 获取标签文本 `UI.text(layoutName: string, id: string): string` 获取标签显示文本。 参数: - 1. `layoutName`(字):目标布局名称。示例:主页面 - 2. `id`(字):目标控件 ID。示例:id_start 返回值(至少接收一个返回值): - 1. `result`(字):返回字符;控件不存在返回空字符。 ### 设置标签文本 `UI.setText(layoutName: string, id: string, text: string)` 设置标签显示文本。 参数: - 1. `layoutName`(字):目标布局名称。示例:主页面 - 2. `id`(字):目标控件 ID。示例:id_start - 3. `text`(字):要设置的文本或字符变量。 返回值:无。 ## 界面函数 / 按钮 ### 获取按钮文本 `UI.text(layoutName: string, id: string): string` 获取按钮显示文本。 参数: - 1. `layoutName`(字):目标布局名称。示例:主页面 - 2. `id`(字):目标控件 ID。示例:id_start 返回值(至少接收一个返回值): - 1. `result`(字):返回字符;控件不存在返回空字符。 ### 设置按钮文本 `UI.setText(layoutName: string, id: string, text: string)` 设置按钮显示文本。 参数: - 1. `layoutName`(字):目标布局名称。示例:主页面 - 2. `id`(字):目标控件 ID。示例:id_start - 3. `text`(字):要设置的文本或字符变量。 返回值:无。 ## 界面函数 / 单选框 ### 获取单选框文本 `UI.text(layoutName: string, id: string): string` 获取单选框显示文本。 参数: - 1. `layoutName`(字):目标布局名称。示例:主页面 - 2. `id`(字):目标控件 ID。示例:id_start 返回值(至少接收一个返回值): - 1. `result`(字):返回字符;控件不存在返回空字符。 ### 设置单选框文本 `UI.setText(layoutName: string, id: string, text: string)` 设置单选框显示文本。 参数: - 1. `layoutName`(字):目标布局名称。示例:主页面 - 2. `id`(字):目标控件 ID。示例:id_start - 3. `text`(字):要设置的文本或字符变量。 返回值:无。 ### 获取选中状态 `UI.checked(layoutName: string, id: string): integer` 获取单选框是否选中,返回 1 或 0。 参数: - 1. `layoutName`(字):目标布局名称。示例:主页面 - 2. `id`(字):目标控件 ID。示例:id_start 返回值(至少接收一个返回值): - 1. `result`(整):返回整数,1 表示选中,0 表示未选中或控件不存在。 ### 设置选中状态 `UI.setChecked(layoutName: string, id: string, checked: integer)` 设置单选框是否选中,1 为选中,0 为未选。 参数: - 1. `layoutName`(字):目标布局名称。示例:主页面 - 2. `id`(字):目标控件 ID。示例:id_start - 3. `checked`(整):1 设为选中,0 取消选中。 返回值:无。 ## 界面函数 / 复选框 ### 获取复选框文本 `UI.text(layoutName: string, id: string): string` 获取复选框显示文本。 参数: - 1. `layoutName`(字):目标布局名称。示例:主页面 - 2. `id`(字):目标控件 ID。示例:id_start 返回值(至少接收一个返回值): - 1. `result`(字):返回字符;控件不存在返回空字符。 ### 设置复选框文本 `UI.setText(layoutName: string, id: string, text: string)` 设置复选框显示文本。 参数: - 1. `layoutName`(字):目标布局名称。示例:主页面 - 2. `id`(字):目标控件 ID。示例:id_start - 3. `text`(字):要设置的文本或字符变量。 返回值:无。 ### 获取选中状态 `UI.checked(layoutName: string, id: string): integer` 获取复选框是否选中,返回 1 或 0。 参数: - 1. `layoutName`(字):目标布局名称。示例:主页面 - 2. `id`(字):目标控件 ID。示例:id_start 返回值(至少接收一个返回值): - 1. `result`(整):返回整数,1 表示选中,0 表示未选中或控件不存在。 ### 设置选中状态 `UI.setChecked(layoutName: string, id: string, checked: integer)` 设置复选框是否选中,1 为选中,0 为未选。 参数: - 1. `layoutName`(字):目标布局名称。示例:主页面 - 2. `id`(字):目标控件 ID。示例:id_start - 3. `checked`(整):1 设为选中,0 取消选中。 返回值:无。 ## 界面函数 / 单行文本框 ### 获取单行文本 `UI.inputText(layoutName: string, id: string): string` 获取单行文本框当前文本。 参数: - 1. `layoutName`(字):目标布局名称。示例:主页面 - 2. `id`(字):目标控件 ID。示例:id_start 返回值(至少接收一个返回值): - 1. `result`(字):返回字符;控件不存在返回空字符。 ### 设置单行文本 `UI.setInputText(layoutName: string, id: string, text: string)` 设置单行文本框当前文本。 参数: - 1. `layoutName`(字):目标布局名称。示例:主页面 - 2. `id`(字):目标控件 ID。示例:id_start - 3. `text`(字):要设置的文本或字符变量。 返回值:无。 ### 获取提示文本 `UI.placeholder(layoutName: string, id: string): string` 获取单行文本框提示文本。 参数: - 1. `layoutName`(字):目标布局名称。示例:主页面 - 2. `id`(字):目标控件 ID。示例:id_start 返回值(至少接收一个返回值): - 1. `result`(字):返回字符;控件不存在返回空字符。 ### 设置提示文本 `UI.setPlaceholder(layoutName: string, id: string, placeholder: string)` 设置单行文本框提示文本。 参数: - 1. `layoutName`(字):目标布局名称。示例:主页面 - 2. `id`(字):目标控件 ID。示例:id_start - 3. `placeholder`(字):要设置的提示文本或字符变量。 返回值:无。 ## 界面函数 / 多行文本框 ### 获取多行文本 `UI.inputText(layoutName: string, id: string): string` 获取多行文本框当前文本。 参数: - 1. `layoutName`(字):目标布局名称。示例:主页面 - 2. `id`(字):目标控件 ID。示例:id_start 返回值(至少接收一个返回值): - 1. `result`(字):返回字符;控件不存在返回空字符。 ### 设置多行文本 `UI.setInputText(layoutName: string, id: string, text: string)` 设置多行文本框当前文本。 参数: - 1. `layoutName`(字):目标布局名称。示例:主页面 - 2. `id`(字):目标控件 ID。示例:id_start - 3. `text`(字):要设置的文本或字符变量。 返回值:无。 ### 获取提示文本 `UI.placeholder(layoutName: string, id: string): string` 获取多行文本框提示文本。 参数: - 1. `layoutName`(字):目标布局名称。示例:主页面 - 2. `id`(字):目标控件 ID。示例:id_start 返回值(至少接收一个返回值): - 1. `result`(字):返回字符;控件不存在返回空字符。 ### 设置提示文本 `UI.setPlaceholder(layoutName: string, id: string, placeholder: string)` 设置多行文本框提示文本。 参数: - 1. `layoutName`(字):目标布局名称。示例:主页面 - 2. `id`(字):目标控件 ID。示例:id_start - 3. `placeholder`(字):要设置的提示文本或字符变量。 返回值:无。 ## 界面函数 / 下拉列表 ### 获取选中索引 `UI.selectedIndex(layoutName: string, id: string): integer` 读取下拉列表当前选中项的位置。 参数: - 1. `layoutName`(字):目标布局名称。示例:主页面 - 2. `id`(字):目标控件 ID。示例:id_start 返回值(至少接收一个返回值): - 1. `result`(整):下拉列表当前选中项的 0 基索引。 可选结果:0及以上=存在有效选中项;-1=没有选中项或没有数据 ### 设置选中索引 `UI.setSelectedIndex(layoutName: string, id: string, index: integer)` 设置下拉列表当前选中索引。 参数: - 1. `layoutName`(字):目标布局名称。示例:主页面 - 2. `id`(字):目标控件 ID。示例:id_start - 3. `index`(整):目标项目索引,从 0 开始。 返回值:无。 ### 获取选中Text `UI.selectedText(layoutName: string, id: string): string` 读取下拉列表当前选中项的 Text。 参数: - 1. `layoutName`(字):目标布局名称。示例:主页面 - 2. `id`(字):目标控件 ID。示例:id_start 返回值(至少接收一个返回值): - 1. `result`(字):下拉列表当前选中项的 Text 字符。 可选结果:Text内容=存在有效选中项;空字符=没有选中项或没有数据 ### 获取选中Value `UI.selectedValue(layoutName: string, id: string): string` 读取下拉列表当前选中项的 Value。 参数: - 1. `layoutName`(字):目标布局名称。示例:主页面 - 2. `id`(字):目标控件 ID。示例:id_start 返回值(至少接收一个返回值): - 1. `result`(字):下拉列表当前选中项的 Value 字符。 可选结果:Value内容=存在有效选中项;空字符=没有选中项或没有数据 ### 获取选项列表 `UI.items(layoutName: string, id: string): string` 获取下拉列表选项 JSON,例如 [{"text":"苹果","value":"apple"}]。 参数: - 1. `layoutName`(字):目标布局名称。示例:主页面 - 2. `id`(字):目标控件 ID。示例:id_start 返回值(至少接收一个返回值): - 1. `result`(字):下拉列表全部选项组成的 JSON 数组字符。 可选结果:JSON数组=包含每项的 text 和 value;[]=下拉列表没有选项 ### 设置选项列表 `UI.setItems(layoutName: string, id: string, options: string)` 批量替换下拉列表选项;支持逗号/换行文本,也支持 JSON 数组,例如 [{"text":"苹果","value":"apple"},{"text":"香蕉","value":"banana"}]。 参数: - 1. `layoutName`(字):目标布局名称。示例:主页面 - 2. `id`(字):目标控件 ID。示例:id_start - 3. `options`(字):逗号或换行分隔的文字,或项目 JSON 数组。示例:[{"text":"苹果","value":"apple"}] 返回值:无。 ### 插入列表项 `UI.insertItem(layoutName: string, id: string, insertPosition: integer, text: string, value: string)` 在指定位置插入一项;索引从 0 开始,填 -1 表示添加到末尾,不需要手写 JSON。 示例:UI.insertItem("主页面","id_list",-1,"苹果","apple")。 参数: - 1. `layoutName`(字):目标布局名称。示例:主页面 - 2. `id`(字):目标控件 ID。示例:id_start - 3. `insertPosition`(整):插入索引从 0 开始;填 -1 添加到末尾。 - 4. `text`(字):项目显示文字。示例:苹果 - 5. `value`(字):项目内部值。示例:apple 返回值:无。 ### 修改列表项 `UI.updateItem(layoutName: string, id: string, index: integer, text: string, value: string)` 按从 0 开始的索引修改一项的 Text 和 Value,不需要手写 JSON。 示例:UI.updateItem("主页面","id_list",0,"香蕉","banana")。 参数: - 1. `layoutName`(字):目标布局名称。示例:主页面 - 2. `id`(字):目标控件 ID。示例:id_start - 3. `index`(整):目标项目索引,从 0 开始。 - 4. `text`(字):项目显示文字。示例:苹果 - 5. `value`(字):项目内部值。示例:apple 返回值:无。 ### 删除列表项 `UI.deleteItem(layoutName: string, id: string, index: integer)` 按从 0 开始的索引删除一项。 示例:UI.deleteItem("主页面","id_list",0)。 参数: - 1. `layoutName`(字):目标布局名称。示例:主页面 - 2. `id`(字):目标控件 ID。示例:id_start - 3. `index`(整):目标项目索引,从 0 开始。 返回值:无。 ## 界面函数 / 列表框 ### 获取选中索引 `UI.selectedIndex(layoutName: string, id: string): integer` 获取列表框最靠上的选中项索引。 多选时读取选中索引数组第 1 项,也就是最小索引。 参数: - 1. `layoutName`(字):目标布局名称。示例:主页面 - 2. `id`(字):目标控件 ID。示例:id_start 返回值(至少接收一个返回值): - 1. `result`(整):列表框最靠上的选中项索引。 可选结果:0及以上=存在选中项时返回最小列表索引;-1=没有选中项或列表没有数据 ### 设置选中索引 `UI.setSelectedIndex(layoutName: string, id: string, index: integer)` 设置列表框选中索引。 参数: - 1. `layoutName`(字):目标布局名称。示例:主页面 - 2. `id`(字):目标控件 ID。示例:id_start - 3. `index`(整):目标项目索引,从 0 开始。 返回值:无。 ### 获取选中索引数组 `UI.selectedIndexes(layoutName: string, id: string): string` 获取列表框全部选中索引,固定返回升序 JSON 数组。 解析示例: 索引数组 = UI.selectedIndexes(布局名称,控件ID) 数量 = Data.jsonSize(索引数组) 列表索引 = Data.jsonGetInt(索引数组,"["..整转字(position).."]") 循环时 position 从 0 到 数量-1。 参数: - 1. `layoutName`(字):目标布局名称。示例:主页面 - 2. `id`(字):目标控件 ID。示例:id_start 返回值(至少接收一个返回值): - 1. `result`(字):列表框全部选中索引组成的升序 JSON 数组字符。 可选结果:[0,2,...]=列表框存在一个或多个选中项;[]=没有选中项或列表没有数据 ### 设置选中索引数组 `UI.setSelectedIndexes(layoutName: string, id: string, indexes: string)` 使用 JSON 数组设置列表框选中索引。 示例:[0,2,4] 传 [] 表示清空。 设置前会校验 JSON 格式和每个索引的范围。 参数: - 1. `layoutName`(字):目标布局名称。示例:主页面 - 2. `id`(字):目标控件 ID。示例:id_start - 3. `indexes`(字):从 0 开始的索引 JSON 数组。示例:[0,2,4];填 [] 清空选择。 返回值:无。 ### 获取选中Text `UI.selectedText(layoutName: string, id: string, index: integer): string` 按列表索引获取已经选中项目的 Text。 索引填 -1:返回选中索引数组第 1 项的 Text。 索引填 0、1、2……:读取该列表索引的 Text。 参数: - 1. `layoutName`(字):目标布局名称。示例:主页面 - 2. `id`(字):目标控件 ID。示例:id_start - 3. `index`(整):列表索引从 0 开始;填 -1 读取最靠上的选中项。 返回值(至少接收一个返回值): - 1. `result`(字):指定已选中列表项的 Text 字符。 可选结果:Text内容=指定索引已选中,或 -1 找到了首个选中项;空字符=指定项未选中、索引越界或列表没有数据 ### 获取选中Value `UI.selectedValue(layoutName: string, id: string, index: integer): string` 按列表索引获取已经选中项目的 Value。 索引填 -1:返回选中索引数组第 1 项的 Value。 索引填 0、1、2……:读取该列表索引的 Value。 参数: - 1. `layoutName`(字):目标布局名称。示例:主页面 - 2. `id`(字):目标控件 ID。示例:id_start - 3. `index`(整):列表索引从 0 开始;填 -1 读取最靠上的选中项。 返回值(至少接收一个返回值): - 1. `result`(字):指定已选中列表项的 Value 字符。 可选结果:Value内容=指定索引已选中,或 -1 找到了首个选中项;空字符=指定项未选中、索引越界或列表没有数据 ### 获取选择模式 `UI.selectMode(layoutName: string, id: string): string` 读取列表框当前使用的选择模式。 参数: - 1. `layoutName`(字):目标布局名称。示例:主页面 - 2. `id`(字):目标控件 ID。示例:id_start 返回值(至少接收一个返回值): - 1. `result`(字):列表框当前选择模式的代码。 可选结果:none=只显示,不允许选择;single=单选;multiple=多选;all=进入模式时全选,之后允许取消部分项目 ### 设置选择模式 `UI.setSelectMode(layoutName: string, id: string, mode: string)` 设置列表框选择模式。 none=只显示,single=单选,multiple=多选,all=全选。 切换到 all 时先选中全部,之后用户仍可取消其中某些项。 参数: - 1. `layoutName`(字):目标布局名称。示例:主页面 - 2. `id`(字):目标控件 ID。示例:id_start - 3. `mode`(字):列表选择模式:none 只显示,single 单选,multiple 多选,all 全选。 返回值:无。 ### 获取列表项 `UI.items(layoutName: string, id: string): string` 获取列表框项目 JSON,例如 [{"text":"苹果","value":"apple"}]。 参数: - 1. `layoutName`(字):目标布局名称。示例:主页面 - 2. `id`(字):目标控件 ID。示例:id_start 返回值(至少接收一个返回值): - 1. `result`(字):列表框全部项目组成的 JSON 数组字符。 可选结果:JSON数组=包含每项的 text 和 value;[]=列表框没有项目 ### 设置列表项 `UI.setItems(layoutName: string, id: string, items: string)` 批量替换列表框项目;支持逗号/换行文本,也支持 JSON 数组,例如 [{"text":"苹果","value":"apple"},{"text":"香蕉","value":"banana"}]。 参数: - 1. `layoutName`(字):目标布局名称。示例:主页面 - 2. `id`(字):目标控件 ID。示例:id_start - 3. `items`(字):逗号或换行分隔的文字,或项目 JSON 数组。示例:[{"text":"苹果","value":"apple"}] 返回值:无。 ### 插入列表项 `UI.insertItem(layoutName: string, id: string, insertPosition: integer, text: string, value: string)` 在指定位置插入一项;索引从 0 开始,填 -1 表示添加到末尾,不需要手写 JSON。 示例:UI.insertItem("主页面","id_list",-1,"苹果","apple")。 参数: - 1. `layoutName`(字):目标布局名称。示例:主页面 - 2. `id`(字):目标控件 ID。示例:id_start - 3. `insertPosition`(整):插入索引从 0 开始;填 -1 添加到末尾。 - 4. `text`(字):项目显示文字。示例:苹果 - 5. `value`(字):项目内部值。示例:apple 返回值:无。 ### 修改列表项 `UI.updateItem(layoutName: string, id: string, index: integer, text: string, value: string)` 按从 0 开始的索引修改一项的 Text 和 Value,不需要手写 JSON。 示例:UI.updateItem("主页面","id_list",0,"香蕉","banana")。 参数: - 1. `layoutName`(字):目标布局名称。示例:主页面 - 2. `id`(字):目标控件 ID。示例:id_start - 3. `index`(整):目标项目索引,从 0 开始。 - 4. `text`(字):项目显示文字。示例:苹果 - 5. `value`(字):项目内部值。示例:apple 返回值:无。 ### 删除列表项 `UI.deleteItem(layoutName: string, id: string, index: integer)` 按从 0 开始的索引删除一项。 示例:UI.deleteItem("主页面","id_list",0)。 参数: - 1. `layoutName`(字):目标布局名称。示例:主页面 - 2. `id`(字):目标控件 ID。示例:id_start - 3. `index`(整):目标项目索引,从 0 开始。 返回值:无。 ## 界面函数 / 锚点导航 ### 获取当前导航索引 `UI.currentIndex(layoutName: string, id: string): integer` 获取当前导航索引。 参数: - 1. `layoutName`(字):目标布局名称。示例:主页面 - 2. `id`(字):目标控件 ID。示例:id_start 返回值(至少接收一个返回值): - 1. `result`(整):当前导航的 0 基索引。 可选结果:0及以上=当前项目存在;-1=没有可用项目 ### 设置当前导航索引 `UI.setCurrentIndex(layoutName: string, id: string, index: integer)` 设置当前导航索引。 参数: - 1. `layoutName`(字):目标布局名称。示例:主页面 - 2. `id`(字):目标控件 ID。示例:id_start - 3. `index`(整):目标项目索引,从 0 开始。 返回值:无。 ### 获取选中Text `UI.selectedText(layoutName: string, id: string): string` 获取当前导航对应项目的 Text。 参数: - 1. `layoutName`(字):目标布局名称。示例:主页面 - 2. `id`(字):目标控件 ID。示例:id_start 返回值(至少接收一个返回值): - 1. `result`(字):当前导航对应项目的 Text 字符。 可选结果:Text内容=当前项目存在;空字符=当前索引无效或没有项目 ### 获取选中Value `UI.selectedValue(layoutName: string, id: string): string` 获取当前导航对应项目的 Value。 参数: - 1. `layoutName`(字):目标布局名称。示例:主页面 - 2. `id`(字):目标控件 ID。示例:id_start 返回值(至少接收一个返回值): - 1. `result`(字):当前导航对应项目的 Value 字符。 可选结果:Value内容=当前项目存在;空字符=当前索引无效或没有项目 ### 获取导航项 `UI.items(layoutName: string, id: string): string` 获取锚点导航项 JSON,例如 [{"text":"首页","value":"#home"}]。 参数: - 1. `layoutName`(字):目标布局名称。示例:主页面 - 2. `id`(字):目标控件 ID。示例:id_start 返回值(至少接收一个返回值): - 1. `result`(字):返回字符,内容是选项数组 JSON;控件不存在返回空数组。 ### 设置导航项 `UI.setItems(layoutName: string, id: string, tabs: string)` 批量设置锚点导航项,格式为 [{"text":"首页","value":"#home"}]。 参数: - 1. `layoutName`(字):目标布局名称。示例:主页面 - 2. `id`(字):目标控件 ID。示例:id_start - 3. `tabs`(字):导航项 JSON 数组。示例:[{"text":"首页","value":"#home"}] 返回值:无。 ### 插入列表项 `UI.insertItem(layoutName: string, id: string, insertPosition: integer, text: string, value: string)` 在指定位置插入一项;索引从 0 开始,填 -1 表示添加到末尾,不需要手写 JSON。 示例:UI.insertItem("主页面","id_list",-1,"苹果","apple")。 参数: - 1. `layoutName`(字):目标布局名称。示例:主页面 - 2. `id`(字):目标控件 ID。示例:id_start - 3. `insertPosition`(整):插入索引从 0 开始;填 -1 添加到末尾。 - 4. `text`(字):项目显示文字。示例:苹果 - 5. `value`(字):项目内部值。示例:apple 返回值:无。 ### 修改列表项 `UI.updateItem(layoutName: string, id: string, index: integer, text: string, value: string)` 按从 0 开始的索引修改一项的 Text 和 Value,不需要手写 JSON。 示例:UI.updateItem("主页面","id_list",0,"香蕉","banana")。 参数: - 1. `layoutName`(字):目标布局名称。示例:主页面 - 2. `id`(字):目标控件 ID。示例:id_start - 3. `index`(整):目标项目索引,从 0 开始。 - 4. `text`(字):项目显示文字。示例:苹果 - 5. `value`(字):项目内部值。示例:apple 返回值:无。 ### 删除列表项 `UI.deleteItem(layoutName: string, id: string, index: integer)` 按从 0 开始的索引删除一项。 示例:UI.deleteItem("主页面","id_list",0)。 参数: - 1. `layoutName`(字):目标布局名称。示例:主页面 - 2. `id`(字):目标控件 ID。示例:id_start - 3. `index`(整):目标项目索引,从 0 开始。 返回值:无。 ## 界面函数 / 容器 ### 获取当前页面索引 `UI.currentIndex(layoutName: string, id: string): integer` 获取当前页面索引。 参数: - 1. `layoutName`(字):目标布局名称。示例:主页面 - 2. `id`(字):目标控件 ID。示例:id_start 返回值(至少接收一个返回值): - 1. `result`(整):当前页面的 0 基索引。 可选结果:0及以上=当前项目存在;-1=没有可用项目 ### 设置当前页面索引 `UI.setCurrentIndex(layoutName: string, id: string, index: integer)` 设置当前页面索引。 参数: - 1. `layoutName`(字):目标布局名称。示例:主页面 - 2. `id`(字):目标控件 ID。示例:id_start - 3. `index`(整):目标项目索引,从 0 开始。 返回值:无。 ### 获取选中Text `UI.selectedText(layoutName: string, id: string): string` 获取当前页面对应项目的 Text。 参数: - 1. `layoutName`(字):目标布局名称。示例:主页面 - 2. `id`(字):目标控件 ID。示例:id_start 返回值(至少接收一个返回值): - 1. `result`(字):当前页面对应项目的 Text 字符。 可选结果:Text内容=当前项目存在;空字符=当前索引无效或没有项目 ### 获取选中Value `UI.selectedValue(layoutName: string, id: string): string` 获取当前页面对应项目的 Value。 参数: - 1. `layoutName`(字):目标布局名称。示例:主页面 - 2. `id`(字):目标控件 ID。示例:id_start 返回值(至少接收一个返回值): - 1. `result`(字):当前页面对应项目的 Value 字符。 可选结果:Value内容=当前项目存在;空字符=当前索引无效或没有项目 ### 获取页面项 `UI.items(layoutName: string, id: string): string` 获取容器页面项 JSON,例如 [{"text":"第一页","value":"page_1"}]。 参数: - 1. `layoutName`(字):目标布局名称。示例:主页面 - 2. `id`(字):目标控件 ID。示例:id_start 返回值(至少接收一个返回值): - 1. `result`(字):返回字符,内容是选项数组 JSON;控件不存在返回空数组。 ### 设置页面项 `UI.setItems(layoutName: string, id: string, pages: string)` 批量设置容器页面项,格式为 [{"text":"第一页","value":"page_1"}]。 参数: - 1. `layoutName`(字):目标布局名称。示例:主页面 - 2. `id`(字):目标控件 ID。示例:id_start - 3. `pages`(字):页面项 JSON 数组。示例:[{"text":"第一页","value":"page_1"}] 返回值:无。 ### 插入列表项 `UI.insertItem(layoutName: string, id: string, insertPosition: integer, text: string, value: string)` 在指定位置插入一项;索引从 0 开始,填 -1 表示添加到末尾,不需要手写 JSON。 示例:UI.insertItem("主页面","id_list",-1,"苹果","apple")。 参数: - 1. `layoutName`(字):目标布局名称。示例:主页面 - 2. `id`(字):目标控件 ID。示例:id_start - 3. `insertPosition`(整):插入索引从 0 开始;填 -1 添加到末尾。 - 4. `text`(字):项目显示文字。示例:苹果 - 5. `value`(字):项目内部值。示例:apple 返回值:无。 ### 修改列表项 `UI.updateItem(layoutName: string, id: string, index: integer, text: string, value: string)` 按从 0 开始的索引修改一项的 Text 和 Value,不需要手写 JSON。 示例:UI.updateItem("主页面","id_list",0,"香蕉","banana")。 参数: - 1. `layoutName`(字):目标布局名称。示例:主页面 - 2. `id`(字):目标控件 ID。示例:id_start - 3. `index`(整):目标项目索引,从 0 开始。 - 4. `text`(字):项目显示文字。示例:苹果 - 5. `value`(字):项目内部值。示例:apple 返回值:无。 ### 删除列表项 `UI.deleteItem(layoutName: string, id: string, index: integer)` 按从 0 开始的索引删除一项。 示例:UI.deleteItem("主页面","id_list",0)。 参数: - 1. `layoutName`(字):目标布局名称。示例:主页面 - 2. `id`(字):目标控件 ID。示例:id_start - 3. `index`(整):目标项目索引,从 0 开始。 返回值:无。 ## 界面函数 / 滑块 ### 获取滑块值 `UI.value(layoutName: string, id: string): number` 获取当前滑块值。 参数: - 1. `layoutName`(字):目标布局名称。示例:主页面 - 2. `id`(字):目标控件 ID。示例:id_start 返回值(至少接收一个返回值): - 1. `result`(浮):返回浮点数;控件不存在或读取失败返回 0。 ### 设置滑块值 `UI.setValue(layoutName: string, id: string, value: number)` 设置当前滑块值。 参数: - 1. `layoutName`(字):目标布局名称。示例:主页面 - 2. `id`(字):目标控件 ID。示例:id_start - 3. `value`(浮):要设置的滑块值,应在当前最小值和最大值之间。 返回值:无。 ### 获取最小值 `UI.min(layoutName: string, id: string): number` 获取滑块最小值。 参数: - 1. `layoutName`(字):目标布局名称。示例:主页面 - 2. `id`(字):目标控件 ID。示例:id_start 返回值(至少接收一个返回值): - 1. `result`(浮):返回浮点数;控件不存在或读取失败返回 0。 ### 设置最小值 `UI.setMin(layoutName: string, id: string, min: number)` 设置滑块最小值。 参数: - 1. `layoutName`(字):目标布局名称。示例:主页面 - 2. `id`(字):目标控件 ID。示例:id_start - 3. `min`(浮):要设置的最小值,不能大于当前最大值。 返回值:无。 ### 获取最大值 `UI.max(layoutName: string, id: string): number` 获取滑块最大值。 参数: - 1. `layoutName`(字):目标布局名称。示例:主页面 - 2. `id`(字):目标控件 ID。示例:id_start 返回值(至少接收一个返回值): - 1. `result`(浮):返回浮点数;控件不存在或读取失败返回 0。 ### 设置最大值 `UI.setMax(layoutName: string, id: string, max: number)` 设置滑块最大值。 参数: - 1. `layoutName`(字):目标布局名称。示例:主页面 - 2. `id`(字):目标控件 ID。示例:id_start - 3. `max`(浮):要设置的最大值,不能小于当前最小值。 返回值:无。 ### 获取步长 `UI.step(layoutName: string, id: string): number` 获取滑块步长。 参数: - 1. `layoutName`(字):目标布局名称。示例:主页面 - 2. `id`(字):目标控件 ID。示例:id_start 返回值(至少接收一个返回值): - 1. `result`(浮):返回浮点数;控件不存在或读取失败返回 0。 ### 设置步长 `UI.setStep(layoutName: string, id: string, step: number)` 设置滑块步长。 参数: - 1. `layoutName`(字):目标布局名称。示例:主页面 - 2. `id`(字):目标控件 ID。示例:id_start - 3. `step`(浮):滑块每次变化的步长,必须大于 0。 返回值:无。 ## 界面函数 / 进度条 ### 获取进度值 `UI.value(layoutName: string, id: string): number` 获取当前进度值。 参数: - 1. `layoutName`(字):目标布局名称。示例:主页面 - 2. `id`(字):目标控件 ID。示例:id_start 返回值(至少接收一个返回值): - 1. `result`(浮):返回浮点数;控件不存在或读取失败返回 0。 ### 设置进度值 `UI.setValue(layoutName: string, id: string, value: number)` 设置当前进度值。 参数: - 1. `layoutName`(字):目标布局名称。示例:主页面 - 2. `id`(字):目标控件 ID。示例:id_start - 3. `value`(浮):要设置的进度值,应在当前最小值和最大值之间。 返回值:无。 ### 获取最大值 `UI.max(layoutName: string, id: string): number` 获取进度条最大值。 参数: - 1. `layoutName`(字):目标布局名称。示例:主页面 - 2. `id`(字):目标控件 ID。示例:id_start 返回值(至少接收一个返回值): - 1. `result`(浮):返回浮点数;控件不存在或读取失败返回 0。 ### 设置最大值 `UI.setMax(layoutName: string, id: string, max: number)` 设置进度条最大值。 参数: - 1. `layoutName`(字):目标布局名称。示例:主页面 - 2. `id`(字):目标控件 ID。示例:id_start - 3. `max`(浮):要设置的最大值,不能小于当前最小值。 返回值:无。 ## 脚本函数 / 脚本控制 ### 标记为入口 `UI.markEntry()` 将当前正在执行的事件标记为程序入口:关闭已显示界面并显示停止悬浮球;当前源文件结束后恢复普通悬浮球。 参数:无。 返回值:无。 ### 销毁程序 `UI.destroyProgram()` 销毁当前 UI 程序实例:关闭运行界面和悬浮球,停止现有脚本,执行窗口销毁事件后释放界面服务;不会退出当前应用。 参数:无。 返回值:无。 ### 隐藏停止按钮 `FloatWindow.removeStopButton(): integer` 隐藏运行状态下的停止悬浮球。 参数:无。 返回值(返回值可以不接收): - 1. `status`(整):执行状态 可选结果:1=成功;-2=失败;-3=当前没有运行中的停止悬浮球 ### 显示停止按钮 `FloatWindow.addStopButton(): integer` 显示运行状态下的停止悬浮球。 参数:无。 返回值(返回值可以不接收): - 1. `status`(整):执行状态 可选结果:1=成功;-2=失败;-3=当前没有运行中的停止悬浮球 ### 设置运行悬浮球位置 `UI.setFloatBallPosition(x: integer, y: integer)` 设置并保存运行悬浮球的屏幕像素位置;窗口显示期间只保存位置,窗口关闭后生效。 参数: - 1. `x`(整):悬浮球左上角 X 坐标,单位像素 - 2. `y`(整):悬浮球左上角 Y 坐标,单位像素 返回值:无。 ### 显示主界面 `UI.showMain(blockOutside: integer)` 显示当前已加载的主界面;参数填 0 可点击布局外关闭,填 1 禁止点击布局外关闭;省略时默认允许。主界面显示时运行悬浮球自动隐藏。 参数: - 1. `blockOutside`(整):点击布局外的处理方式:0 关闭主界面,1 不关闭。;可省略,默认 0 返回值:无。 ### 关闭主界面 `UI.closeMain()` 关闭当前主界面但保留页面状态;没有其他布局窗口时恢复运行悬浮球。 参数:无。 返回值:无。 ### 暂停任务 `Script.pause(任务类型: string, 任务ID: integer): integer` 暂停主入口、指定线程、指定定时器,或调用任务之外的全部任务;保留Lua变量和执行位置,正在处理的native函数结束后再暂停。 参数: - 1. `任务类型`(字):main暂停主入口,thread暂停线程,timer暂停定时器,all暂停调用任务之外的全部任务 - 2. `任务ID`(整):main或all填0;thread或timer填各自的1-99,线程和定时器可以使用相同ID 返回值(返回值可以不接收): - 1. `任务数量`(整):找到并提交暂停请求的任务数量。 可选结果:大于0=暂停请求已提交;如果目标是调用任务,会在恢复后返回;0=目标任务不存在 ### 继续任务 `Script.resume(任务类型: string, 任务ID: integer): integer` 继续主入口、指定线程、指定定时器或全部暂停任务;必须由仍在运行的任务调用。 参数: - 1. `任务类型`(字):main继续主入口,thread继续线程,timer继续定时器,all继续全部暂停任务 - 2. `任务ID`(整):main或all填0;thread或timer填各自的1-99,线程和定时器可以使用相同ID 返回值(返回值可以不接收): - 1. `恢复数量`(整):实际恢复的任务数量。 可选结果:大于0=已恢复对应数量的暂停任务;0=目标不存在或目标没有暂停 ### 重新执行入口 `Script.restart()` 停止并清理当前运行的线程、定时器和触摸,再按原运行设置从入口源文件第一行重新执行;调用后不再执行当前下一行。 参数:无。 返回值:无。 ### 开启日志输出 `Script.enableLog()` 开启本次运行后续的 Log 和 print 输出;调试启动、UI启动和打包运行均可使用,日志写入现有控制台及日志文件。 参数:无。 返回值:无。 ### 关闭日志输出 `Script.disableLog()` 关闭本次运行后续的 Log 和 print 输出,已经写入的日志不会删除。 参数:无。 返回值:无。 ### 添加运行提示 `Script.addRuntimePrompt()` 恢复本次脚本运行中的普通提示发送;适合在函数或插件调用完成后恢复提示()。 参数:无。 返回值:无。 ### 移除运行提示 `Script.removeRuntimePrompt()` 立即移除当前普通提示并暂停后续提示发送;适合在函数或插件调用前关闭,只有调用添加运行提示后提示()才会重新显示,错误提示不受影响。 参数:无。 返回值:无。 ### 弹出对话框 `UI.showDialogWait(layoutName: string, blockOutside: integer)` 加载指定布局并等待关闭;第二个参数填 0 可点击布局外关闭,填 1 禁止点击布局外关闭;返回键始终可以关闭。 参数: - 1. `layoutName`(字):要显示的布局名称。示例:主页面 - 2. `blockOutside`(整):点击布局外的处理方式:0 关闭对话框,1 不关闭。 返回值:无。 ### 关闭对话框 `UI.closeDialog()` 关闭 UI.showDialogWait 创建的布局对话框,不关闭主界面。 参数:无。 返回值:无。 ## 脚本函数 / 项目信息 ### 获取当前项目路径 `Script.currentProjectPath(): string` 返回当前项目绝对路径,末尾不带斜杠。 可视化节点必须先用函数节点把返回值接收到字符变量,再在变量赋值节点中拼接 /图片、/数据等项目内路径;不能把本函数调用直接写进变量赋值表达式。纯 Lua 中可直接拼接。 参数:无。 返回值(至少接收一个返回值): - 1. `result`(字):返回字符结果。 ## 脚本函数 / 线程任务 ### 启动线程 `启动线程(threadId: integer, sourceFile: string): integer` 启动一个独立 Lua 状态执行指定源文件;线程ID范围1-99,与定时器ID分别管理,可以使用相同数字。输入命令共享主按键服务但每个运行线程使用独立连接。 参数: - 1. `threadId`(整):线程 ID,范围 1~99;可与定时器使用相同数字。 - 2. `sourceFile`(字):要执行的项目源文件名,不带 .sue 后缀。示例:登录 返回值(返回值可以不接收): - 1. `status`(整):执行状态 可选结果:1=成功;0=失败 ### 停止线程 `停止线程(threadId: integer): integer` 停止当前运行会话内指定线程ID的线程;线程ID与定时器ID分别管理,可以使用相同数字。线程ID填-1时只停止全部线程。 参数: - 1. `threadId`(整):线程 ID,范围 1~99;填 -1 停止全部线程。 返回值(返回值可以不接收): - 1. `status`(整):执行状态 可选结果:1=成功;0=失败 ### 启动定时器 `启动定时器(timerId: integer, interval: integer, sourceFile: string): integer` 按指定毫秒间隔重复执行源文件;定时器ID范围1-99,与线程ID分别管理,可以使用相同数字。输入命令共享主按键服务但每个定时器线程使用独立连接。 参数: - 1. `timerId`(整):定时器 ID,范围 1~99;可与线程使用相同数字。 - 2. `interval`(整):两次执行之间的间隔,单位毫秒。 - 3. `sourceFile`(字):每次执行的项目源文件名,不带 .sue 后缀。示例:定时任务 返回值(返回值可以不接收): - 1. `status`(整):执行状态 可选结果:1=成功;0=失败 ### 停止定时器 `停止定时器(timerId: integer): integer` 停止当前运行会话内指定定时器ID的定时器;定时器ID与线程ID分别管理,可以使用相同数字。定时器ID填-1时只停止全部定时器。 参数: - 1. `timerId`(整):定时器 ID,范围 1~99;填 -1 停止全部定时器。 返回值(返回值可以不接收): - 1. `status`(整):执行状态 可选结果:1=成功;0=失败 ## 脚本函数 / 悬浮控件 ### 创建悬浮窗 `FloatWindow.create(name: string, x: integer, y: integer, width: integer, height: integer): integer` 创建轻量悬浮窗;同名窗口再次调用时更新位置和大小。新窗口默认触摸穿透。 参数: - 1. `name`(字):用于后续操作的窗口名称。示例:"状态提示"。 - 2. `x`(整):窗口左上角 X 坐标,单位像素。 - 3. `y`(整):窗口左上角 Y 坐标,单位像素。 - 4. `width`(整):窗口宽度,单位像素,必须大于 0。 - 5. `height`(整):窗口高度,单位像素,必须大于 0。 返回值(返回值可以不接收): - 1. `status`(整):执行状态 可选结果:1=成功;-1=名称无效;-2=失败;-4=参数错误 ### 关闭悬浮窗 `FloatWindow.close(name: string): integer` 关闭指定名称的悬浮窗并释放图片和窗口资源。 参数: - 1. `name`(字):要关闭的窗口名称,必须与创建时一致。 返回值(返回值可以不接收): - 1. `status`(整):执行状态 可选结果:1=成功;-1=名称无效;-2=失败;-3=窗口不存在 ### 关闭全部悬浮窗 `FloatWindow.closeAll(): integer` 关闭当前脚本创建的全部轻量悬浮窗;脚本结束时也会自动清理。 参数:无。 返回值(返回值可以不接收): - 1. `status`(整):执行状态 可选结果:1=成功;-2=失败 ### 设置悬浮文字 `FloatWindow.setText(name: string, text: string, size: integer, color: string, align: integer): integer` 设置窗口文字、大小、颜色和九宫格对齐,可与图片叠加。 参数: - 1. `name`(字):目标窗口名称。 - 2. `text`(字):要显示的文字或字符变量。 - 3. `size`(整):文字大小,单位像素。 - 4. `color`(字):文字颜色,格式 #AARRGGBB。示例:#FFFFFFFF - 5. `align`(整):文字在窗口中的九宫格位置。 返回值(返回值可以不接收): - 1. `status`(整):执行状态 可选结果:1=成功;-1=名称无效;-2=失败;-3=窗口不存在;-4=参数错误 ### 设置悬浮图片 `FloatWindow.setImage(name: string, path: string, mode: integer): integer` 异步加载绝对路径图片;模式0完整显示、1裁剪铺满、2拉伸铺满,传空字符清除图片。 参数: - 1. `name`(字):目标窗口名称。 - 2. `path`(字):图片绝对路径。示例:/sdcard/图片.png;传空字符可清除图片。 - 3. `mode`(整):图片显示模式:0 完整显示,1 裁剪铺满,2 拉伸铺满。 返回值(返回值可以不接收): - 1. `status`(整):执行状态 可选结果:1=成功;-1=名称无效;-2=失败;-3=窗口不存在;-4=参数错误 ### 设置悬浮背景 `FloatWindow.setBackground(name: string, color: string, radius: integer): integer` 设置窗口背景颜色和圆角半径;颜色支持透明度。 参数: - 1. `name`(字):目标窗口名称。 - 2. `color`(字):背景颜色,格式 #AARRGGBB。示例:#CC202124 - 3. `radius`(整):圆角半径,单位像素;填 0 表示直角。 返回值(返回值可以不接收): - 1. `status`(整):执行状态 可选结果:1=成功;-1=名称无效;-2=失败;-3=窗口不存在;-4=参数错误 ### 设置悬浮位置 `FloatWindow.setPosition(name: string, x: integer, y: integer): integer` 设置窗口左上角的屏幕坐标。 参数: - 1. `name`(字):目标窗口名称。 - 2. `x`(整):窗口左上角 X 坐标,单位像素。 - 3. `y`(整):窗口左上角 Y 坐标,单位像素。 返回值(返回值可以不接收): - 1. `status`(整):执行状态 可选结果:1=成功;-1=名称无效;-2=失败;-3=窗口不存在 ### 设置悬浮大小 `FloatWindow.setSize(name: string, width: integer, height: integer): integer` 设置窗口宽度和高度。 参数: - 1. `name`(字):目标窗口名称。 - 2. `width`(整):窗口宽度,单位像素,必须大于 0。 - 3. `height`(整):窗口高度,单位像素,必须大于 0。 返回值(返回值可以不接收): - 1. `status`(整):执行状态 可选结果:1=成功;-1=名称无效;-2=失败;-3=窗口不存在;-4=参数错误 ### 设置悬浮显示 `FloatWindow.setVisible(name: string, visible: integer): integer` 显示或临时隐藏窗口,隐藏不会清除内容和交互设置。 参数: - 1. `name`(字):目标窗口名称。 - 2. `visible`(整):显示状态:1 显示,0 隐藏。 返回值(返回值可以不接收): - 1. `status`(整):执行状态 可选结果:1=成功;-1=名称无效;-2=失败;-3=窗口不存在 ### 设置悬浮透明度 `FloatWindow.setAlpha(name: string, alpha: integer): integer` 设置整个窗口透明度;0 完全透明,255 完全不透明。 参数: - 1. `name`(字):目标窗口名称。 - 2. `alpha`(整):整个窗口的透明度,范围 0~255;0 完全透明,255 完全不透明。 返回值(返回值可以不接收): - 1. `status`(整):执行状态 可选结果:1=成功;-1=名称无效;-2=失败;-3=窗口不存在;-4=参数错误 ### 设置悬浮交互 `FloatWindow.setInteraction(name: string, clickable: integer, draggable: integer): integer` 分别设置可点击和可拖动;都关闭时触摸穿透,都开启时自动区分点击、长按和拖动。 参数: - 1. `name`(字):目标窗口名称。 - 2. `clickable`(整):是否接收点击和长按:1 接收,0 不接收。 - 3. `draggable`(整):是否允许拖动窗口:1 允许,0 禁止。 返回值(返回值可以不接收): - 1. `status`(整):执行状态 可选结果:1=成功;-1=名称无效;-2=失败;-3=窗口不存在 ### 获取悬浮事件 `FloatWindow.getEvent(timeout: integer): (string, string, integer, integer)` 按发生顺序获取一条事件。等待时间为 0 时立即返回,大于 0 时限时等待,小于 0 时持续等待;点击或拖动事件之后还会返回一次 up,系统取消触摸时不会返回。 参数: - 1. `timeout`(整):等待时间,单位毫秒:0 立即返回,大于 0 时限时等待,小于 0 时一直等待。 返回值(至少接收一个返回值): - 1. `窗口名称`(字):触发事件的悬浮窗名称;超时为空 - 2. `事件类型`(字):click点击、longPress长按、drag拖动结束、up弹起;超时为空 - 3. `X`(整):窗口左上角X;超时返回-1 - 4. `Y`(整):窗口左上角Y;超时返回-1 ## 脚本函数 / 全屏绘图 ### 关闭全屏绘图 `ScreenDraw.close(): integer` 关闭透明绘图层并释放全部图形;再次绘制时会自动创建新绘图层。 参数:无。 返回值(返回值可以不接收): - 1. `执行状态`(整):操作结果 可选结果:1=成功;-2=失败 ### 清空绘图内容 `ScreenDraw.clear(): integer` 清除全部图形,绘图层保持开启。 参数:无。 返回值(返回值可以不接收): - 1. `执行状态`(整):操作结果 可选结果:1=成功;-2=失败;-3=绘图层未开启 ### 设置绘图显示 `ScreenDraw.setVisible(visible: integer): integer` 显示或隐藏整个绘图层;隐藏时仍保留图形数据。 参数: - 1. `visible`(整):绘图层显示状态:1 显示,0 隐藏。 返回值(返回值可以不接收): - 1. `执行状态`(整):操作结果 可选结果:1=成功;-2=失败;-3=绘图层未开启 ### 移除图形 `ScreenDraw.remove(drawId: integer): integer` 移除指定ID图形。 参数: - 1. `drawId`(整):要移除的图形 ID,范围 0~4095。 返回值(返回值可以不接收): - 1. `执行状态`(整):操作结果 可选结果:1=成功;-2=失败;-3=绘图层未开启;-5=绘图ID无效或不存在 ### 绘制线条 `ScreenDraw.line(drawId: integer, x1: integer, y1: integer, x2: integer, y2: integer, color: string, lineWidth: integer): integer` 按屏幕像素坐标绘制线条;首次绘制自动开启,相同 drawId 会替换原图形。 参数: - 1. `drawId`(整):图形 ID,范围 0~4095;相同 ID 会替换原图形。 - 2. `x1`(整):线条起点 X 坐标,单位屏幕像素。 - 3. `y1`(整):线条起点 Y 坐标,单位屏幕像素。 - 4. `x2`(整):线条终点 X 坐标,单位屏幕像素。 - 5. `y2`(整):线条终点 Y 坐标,单位屏幕像素。 - 6. `color`(字):线条颜色,格式 #RRGGBB 或 #AARRGGBB。示例:#FFFF0000 - 7. `lineWidth`(整):线条宽度,单位像素,必须大于 0。 返回值(返回值可以不接收): - 1. `执行状态`(整):操作结果 可选结果:1=成功;-2=失败;-4=参数错误;-5=绘图ID无效 ### 绘制矩形 `ScreenDraw.rect(drawId: integer, x: integer, y: integer, width: integer, height: integer, color: string, lineWidth: integer, fill: integer): integer` 按屏幕像素坐标绘制矩形;首次绘制自动开启,相同 drawId 会替换原图形。 参数: - 1. `drawId`(整):图形 ID,范围 0~4095;相同 ID 会替换原图形。 - 2. `x`(整):矩形左上角 X 坐标,单位屏幕像素。 - 3. `y`(整):矩形左上角 Y 坐标,单位屏幕像素。 - 4. `width`(整):矩形宽度,单位像素,必须大于 0。 - 5. `height`(整):矩形高度,单位像素,必须大于 0。 - 6. `color`(字):矩形颜色,格式 #RRGGBB 或 #AARRGGBB。示例:#80FF0000 - 7. `lineWidth`(整):边框宽度,单位像素,必须大于 0。 - 8. `fill`(整):绘制方式:1 填充,0 只画边框。 返回值(返回值可以不接收): - 1. `执行状态`(整):操作结果 可选结果:1=成功;-2=失败;-4=参数错误;-5=绘图ID无效 ### 绘制圆形 `ScreenDraw.circle(drawId: integer, x: integer, y: integer, radius: integer, color: string, lineWidth: integer, fill: integer): integer` 按屏幕像素坐标绘制圆形;首次绘制自动开启,相同 drawId 会替换原图形。 参数: - 1. `drawId`(整):图形 ID,范围 0~4095;相同 ID 会替换原图形。 - 2. `x`(整):圆心 X 坐标,单位屏幕像素。 - 3. `y`(整):圆心 Y 坐标,单位屏幕像素。 - 4. `radius`(整):圆的半径,单位像素,必须大于 0。 - 5. `color`(字):圆形颜色,格式 #RRGGBB 或 #AARRGGBB。示例:#8000FF00 - 6. `lineWidth`(整):边框宽度,单位像素,必须大于 0。 - 7. `fill`(整):绘制方式:1 填充,0 只画边框。 返回值(返回值可以不接收): - 1. `执行状态`(整):操作结果 可选结果:1=成功;-2=失败;-4=参数错误;-5=绘图ID无效 ### 绘制路径 `ScreenDraw.path(drawId: integer, points: string, color: string, lineWidth: integer, closed: integer, fill: integer): integer` 按屏幕像素坐标绘制折线或闭合图形;首次绘制自动开启,相同 drawId 会替换原图形。 参数: - 1. `drawId`(整):图形 ID,范围 0~4095;相同 ID 会替换原图形。 - 2. `points`(字):坐标点 JSON 数组,每项为 [X,Y]。示例:[[0,0],[100,100]] - 3. `color`(字):路径颜色,格式 #RRGGBB 或 #AARRGGBB。示例:#FFFFFFFF - 4. `lineWidth`(整):路径线宽,单位像素,必须大于 0。 - 5. `closed`(整):路径状态:1 闭合首尾,0 保持折线。 - 6. `fill`(整):闭合路径的绘制方式:1 填充,0 只画边框。 返回值(返回值可以不接收): - 1. `执行状态`(整):操作结果 可选结果:1=成功;-2=失败;-4=参数错误;-5=绘图ID无效 ### 绘制文字 `ScreenDraw.text(drawId: integer, x: integer, y: integer, text: string, color: string, size: integer): integer` 以 X、Y 为左上角绘制文字,支持换行;首次绘制自动开启,相同 drawId 会替换原图形。 参数: - 1. `drawId`(整):图形 ID,范围 0~4095;相同 ID 会替换原图形。 - 2. `x`(整):文字区域左上角 X 坐标,单位屏幕像素。 - 3. `y`(整):文字区域左上角 Y 坐标,单位屏幕像素。 - 4. `text`(字):要绘制的文字或字符变量。示例:"运行中"。 - 5. `color`(字):文字颜色,格式 #RRGGBB 或 #AARRGGBB。示例:#FFFFFFFF - 6. `size`(整):文字大小,单位像素;可使用快捷选择或手动填写。 返回值(返回值可以不接收): - 1. `执行状态`(整):操作结果 可选结果:1=成功;-2=失败;-4=参数错误;-5=绘图ID无效 ### 批量刷新图形 `ScreenDraw.batch(operations: string): integer` 一次新增、更新或删除多个图形;整批操作只发送一次并在全部成功后刷新一次,数组中任一项无效时画面保持不变。 示例:ScreenDraw.batch("[{\"type\":\"circle\",\"drawId\":1000,\"x\":300,\"y\":400,\"radius\":20,\"color\":\"#FFFFFFFF\",\"lineWidth\":3,\"fill\":true}]") 参数: - 1. `operations`(字):操作 JSON 数组字符串,可直接填写字符变量。每项必须包含 type 和 drawId;type 支持 line、rect、circle、path、text、remove。绘图项的其他字段与对应单图形函数相同;path 的 points 使用 [[x,y],[x,y]]。 返回值(返回值可以不接收): - 1. `执行状态`(整):操作结果 可选结果:1=成功;-2=失败;-4=参数错误;-5=绘图ID无效或删除目标不存在 ### 批量设置样式 `ScreenDraw.setAllStyle(color: string, lineWidth: integer, fill: integer): integer` 统一修改当前全部图形:颜色用于全部图形,线宽用于线条、矩形、圆形和路径,填充用于矩形、圆形和路径;文字只修改颜色。 参数: - 1. `color`(字):全部图形使用的颜色,格式 #RRGGBB 或 #AARRGGBB。示例:#FFFFFFFF - 2. `lineWidth`(整):线条和边框的统一宽度,单位像素,必须大于 0。 - 3. `fill`(整):矩形、圆形和闭合路径的绘制方式:1 填充,0 只画边框。 返回值(返回值可以不接收): - 1. `执行状态`(整):操作结果 可选结果:1=成功;-2=失败;-3=绘图层未开启;-4=参数错误 ## 按键函数 / 触摸操作 ### 单击 `Key.tap(x: integer, y: integer)` 点击指定坐标一次;支持 Root 和无障碍模式。 参数: - 1. `x`(整):点击位置的 X 坐标。 - 2. `y`(整):点击位置的 Y 坐标。 返回值:无。 ### 按下 `Key.down(x: integer, y: integer, fingerId: integer)` 在指定坐标按下并保持;必须配合移动或弹起使用,脚本停止时会自动释放。支持 Root 和无障碍模式;无障碍模式同时只保持一根手指。 参数: - 1. `x`(整):按下位置的 X 坐标。 - 2. `y`(整):按下位置的 Y 坐标。 - 3. `fingerId`(整):手指编号,范围 1~5;默认 1。;可省略,默认 1 返回值:无。 ### 移动 `Key.move(目标横坐标: integer, 目标纵坐标: integer, 手指编号: integer, 移动时间: integer)` 把已按下的手指移动到目标坐标,适合持续拖动或控制虚拟摇杆。支持 Root 和无障碍模式;无障碍模式需要 Android 8.0 及以上,且只移动当前保持的手指。 参数: - 1. `目标横坐标`(整):移动终点的 X 坐标。 - 2. `目标纵坐标`(整):移动终点的 Y 坐标。 - 3. `手指编号`(整):需要移动的手指编号,范围 1~5;默认 1,快捷值仅为预设。;可省略,默认 1 - 4. `移动时间`(整):移动到终点的持续时间,单位毫秒;快捷值仅为预设,可手动填写。;可省略,默认 500 返回值:无。 ### 弹起 `Key.up(fingerId: integer)` 弹起指定手指编号,结束对应的按下或移动动作;支持 Root 和无障碍模式。无障碍模式会释放当前保持的手指。 参数: - 1. `fingerId`(整):手指编号,范围 1~5;默认 1。;可省略,默认 1 返回值:无。 ### 滑动 `Key.swipe(startX: integer, startY: integer, endX: integer, endY: integer, duration: integer)` 从起点连续滑动到终点;支持 Root 和无障碍模式。Root 模式的时长不受 60000 毫秒限制;无障碍模式受 Android 单次手势限制,小于 2 毫秒按 2 毫秒执行,超过 60000 毫秒按 60000 毫秒执行。 参数: - 1. `startX`(整):滑动起点 X 坐标。 - 2. `startY`(整):滑动起点 Y 坐标。 - 3. `endX`(整):滑动终点 X 坐标。 - 4. `endY`(整):滑动终点 Y 坐标。 - 5. `duration`(整):滑动持续时间,单位毫秒;默认 500。Root 模式可填写超过 60000 的时长;无障碍模式会限制在 2~60000 毫秒。;可省略,默认 500 返回值:无。 ### 长按 `Key.hold(x: integer, y: integer, duration: integer)` 按住指定坐标一段时间后自动弹起;支持 Root 和无障碍模式。 参数: - 1. `x`(整):长按位置的 X 坐标。 - 2. `y`(整):长按位置的 Y 坐标。 - 3. `duration`(整):长按持续时间,单位毫秒。 返回值:无。 ### 弹起全部手指 `Key.upAll()` 弹起全部手指并清理当前触摸状态;支持 Root 和无障碍模式。 参数:无。 返回值:无。 ### 复杂手势组合动作 `Key.action(actions: string)` 执行一条或多条手指轨迹;最外层是手指列表,每条轨迹由多个 [X,Y,耗时] 点组成。支持 Root 和无障碍模式。 参数: - 1. `actions`(字):手势 JSON 字符串,格式 [[[x,y,time],...],...]。示例:[[[100,200,0],[300,200,500]]] 表示一根手指在 500 毫秒内向右移动。 返回值:无。 ## 按键函数 / 设备按键 ### 设备单击 `Key.keyClick(keyCode: integer)` 传入 1 个整数键码并立即按下、弹起;按键是否有可见效果取决于系统和当前焦点。仅支持 Root 模式。 参数: - 1. `keyCode`(整):设备键码;点击“设备按键”可选择常用系统键、输入键或媒体键。 返回值:无。 ### 设备按下 `Key.keyDown(keyCode: integer)` 传入 1 个整数键码并保持按下,不会自动弹起;仅支持 Root 模式。 参数: - 1. `keyCode`(整):设备键码;点击“设备按键”可选择常用系统键、输入键或媒体键。 返回值:无。 ### 设备弹起 `Key.keyUp(keyCode: integer)` 传入与设备按下相同的整数键码并弹起;仅支持 Root 模式。 参数: - 1. `keyCode`(整):设备键码;点击“设备按键”可选择常用系统键、输入键或媒体键。 返回值:无。 ## 按键函数 / 文本输入 ### 文本输入 `Key.inputText(text: string)` 向当前获得焦点的输入框输入文本;仅支持 Root 模式。 参数: - 1. `text`(字):要输入的文字或字符变量。示例:"测试内容"。 返回值:无。 ## 按键函数 / 无障碍节点 ### 无障碍节点 `Accessibility.node(requestJson: string): (integer, string)` 按 selector 在当前无障碍窗口中查找节点并执行动作。 推荐做法:优先使用节点代码生成器创建 requestJson。手动填写时建议同时提供 packageName,并结合 text、viewId 或 className 缩小范围。 只查找不执行:把 action 填为空字符或 none。 参数: - 1. `requestJson`(字):单行节点请求 JSON;建议使用节点代码生成器填写。 示例:{"selector":{"text":"确定","packageName":"com.example.app"},"matchMode":"exact","action":"click"} action 为空字符或 none 时只查找节点。 返回值(返回值可以不接收): - 1. `status`(整):动作状态码;1 表示执行成功,0 表示未找到节点。 可选结果:1=节点找到且动作执行成功;0=没有匹配到节点;-1=未知执行错误;-2=无障碍服务未连接;-3=请求参数或 JSON 格式无效;-4=节点存在,但不支持指定动作;-5=节点支持动作,但执行失败 - 2. `result`(字):动作结果 JSON 字符串,包含 status、ok、found、message;成功时还包含 bounds。 ## 图像函数 / 图色识别 ### 获取坐标颜色 `Image.getColor(横坐标: integer, 纵坐标: integer): string` 读取当前截图指定坐标,返回 #RRGGBB 颜色。 参数: - 1. `横坐标`(整):当前截图中要读取的 X 坐标(横向位置)。 - 2. `纵坐标`(整):当前截图中要读取的 Y 坐标(纵向位置)。 返回值(至少接收一个返回值): - 1. `颜色`(字):指定像素的颜色;坐标无效时为空字符。 ### 坐标比色 `Image.compareColor(横坐标: integer, 纵坐标: integer, 目标颜色: string, 颜色容差: integer): integer` 判断指定像素是否在目标颜色容差内。 参数: - 1. `横坐标`(整):当前截图中要比较的 X 坐标(横向位置)。 - 2. `纵坐标`(整):当前截图中要比较的 Y 坐标(纵向位置)。 - 3. `目标颜色`(字):要查找或比较的目标颜色,格式 #RRGGBB。示例:#FF0000 - 4. `颜色容差`(整):范围 0~255;0 最严格,数值越大范围越宽。快捷值仅为常用预设,可手动填写 返回值(至少接收一个返回值): - 1. `是否匹配`(整):坐标颜色是否匹配目标颜色。 可选结果:1=条件成立;0=条件不成立 ### 多点比色 `Image.compareMultiColor(固定色表: string, 颜色容差: integer): integer` 同时核对多个固定坐标的颜色,适合判断一个界面状态是否完整出现。 参数: - 1. `固定色表`(字):格式为 x,y,#RRGGBB,多个点用 | 分隔。示例:100,200,#FFFFFF|120,200,#FF0000;也可用截屏工具生成。 - 2. `颜色容差`(整):范围 0~255;0 最严格,数值越大范围越宽。快捷值仅为常用预设,可手动填写 返回值(至少接收一个返回值): - 1. `是否匹配`(整):全部坐标颜色是否匹配。 可选结果:1=条件成立;0=条件不成立 ### 区域找色 `Image.findColor(目标颜色: string, 颜色容差: integer, 范围横坐标: integer, 范围纵坐标: integer, 范围宽度: integer, 范围高度: integer, 查找方向: integer): image` 按查找方向返回范围内第一个匹配颜色的位置。 参数: - 1. `目标颜色`(字):要查找或比较的目标颜色,格式 #RRGGBB。示例:#FF0000 - 2. `颜色容差`(整):范围 0~255;0 最严格,数值越大范围越宽。快捷值仅为常用预设,可手动填写 - 3. `范围横坐标`(整):查找区域左上角 X 坐标;X、Y、宽、高都填 0 时使用全屏。 - 4. `范围纵坐标`(整):查找区域左上角 Y 坐标;X、Y、宽、高都填 0 时使用全屏。 - 5. `范围宽度`(整):查找区域宽度;X、Y、宽、高都填 0 时使用全屏。 - 6. `范围高度`(整):查找区域高度;X、Y、宽、高都填 0 时使用全屏。 - 7. `查找方向`(整):扫描顺序:0 左上到右下,1 右上到左下,2 左下到右上,3 右下到左上。 返回值(至少接收一个返回值): - 1. `图像结果`(图):返回统一图像结果集合,未命中时总个数为 0。每项只包含名称、X、Y、宽、高和相似度;使用获取名称、获取X、获取Y、获取宽、获取高和获取相似度读取。相似度范围为 0~1,保留两位小数。 ### 区域颜色统计 `Image.colorStats(目标颜色: string, 颜色容差: integer, 范围横坐标: integer, 范围纵坐标: integer, 范围宽度: integer, 范围高度: integer): (integer, integer, number)` 统计目标颜色的像素覆盖情况。区域覆盖率=匹配像素数÷范围像素总数×100;血量等进度=当前匹配像素数÷满值匹配像素数×100,满值需用相同范围、颜色和容差采集。 参数: - 1. `目标颜色`(字):要查找或比较的目标颜色,格式 #RRGGBB。示例:#FF0000 - 2. `颜色容差`(整):范围 0~255;0 最严格,数值越大范围越宽。快捷值仅为常用预设,可手动填写 - 3. `范围横坐标`(整):统计范围 X;全屏可填 0 - 4. `范围纵坐标`(整):统计范围 Y;全屏可填 0 - 5. `范围宽度`(整):统计范围宽;全屏可填 0 - 6. `范围高度`(整):统计范围高;全屏可填 0 返回值(至少接收一个返回值): - 1. `匹配像素数`(整):范围内匹配目标颜色的像素数量。 - 2. `范围像素总数`(整):有效统计范围的全部像素数量,即范围宽度乘以高度。 - 3. `区域颜色覆盖率`(浮):匹配像素数÷范围像素总数×100,范围 0~100,四舍五入保留两位小数。 ### 区域色块查找 `Image.findColorBlock(目标颜色: string, 颜色容差: integer, 范围横坐标: integer, 范围纵坐标: integer, 范围宽度: integer, 范围高度: integer, 最小宽度: integer, 最小高度: integer): image` 查找由目标颜色连续组成的色块,返回各色块的位置、大小和填充率。这里的相似度表示色块像素数除以外接矩形像素数。 参数: - 1. `目标颜色`(字):要查找或比较的目标颜色,格式 #RRGGBB。示例:#FF0000 - 2. `颜色容差`(整):范围 0~255;0 最严格,数值越大范围越宽。快捷值仅为常用预设,可手动填写 - 3. `范围横坐标`(整):查找区域左上角 X 坐标;X、Y、宽、高都填 0 时使用全屏。 - 4. `范围纵坐标`(整):查找区域左上角 Y 坐标;X、Y、宽、高都填 0 时使用全屏。 - 5. `范围宽度`(整):查找区域宽度;X、Y、宽、高都填 0 时使用全屏。 - 6. `范围高度`(整):查找区域高度;X、Y、宽、高都填 0 时使用全屏。 - 7. `最小宽度`(整):色块最小宽度,必须大于 0;快捷值仅为预设,可手动填写 - 8. `最小高度`(整):色块最小高度,必须大于 0;快捷值仅为预设,可手动填写 返回值(至少接收一个返回值): - 1. `图像结果`(图):返回统一图像结果集合,未命中时总个数为 0。每项只包含名称、X、Y、宽、高和相似度;使用获取名称、获取X、获取Y、获取宽、获取高和获取相似度读取。相似度范围为 0~1,保留两位小数。 ## 图像函数 / 图像处理 ### 设置截图通道保活时间 `Image.setHotCaptureDuration(保活时间: integer)` 设置截图通道在最后一次成功取帧后继续保持开启多久。保活期间再次找色、找图或识别文字,会复用现有截图通道并重新开始计时,从而减少重复启动截图环境的耗时。保活会持续占用截图进程、图像缓冲和一定的系统资源;长时间不使用屏幕识别时可设置为 0,需要高频连续识别前再恢复。该时间不是截图间隔、脚本延时或缓存画面的有效时间。 参数: - 1. `保活时间`(整):最后一次成功取帧后,截图通道继续保持开启的时间,单位毫秒。默认 1000;填 0 表示立即释放截图通道。;可省略,默认 1000 返回值:无。 ### 保存屏幕截图 `Image.screenshot(输出路径: string, 范围横坐标: integer, 范围纵坐标: integer, 范围宽度: integer, 范围高度: integer): integer` 保存当前采集帧,不会在保存时再次缩放。采集帧通常使用项目基准分辨率;设备分辨率更小时不会放大。 范围参数全部填 0:保存完整采集帧。指定有效范围:只保存该范围与画面相交的裁剪区域。 参数: - 1. `输出路径`(字):输出文件绝对路径,必须包含文件名和后缀。示例:/sdcard/结果.png - 2. `范围横坐标`(整):保存范围 X;整屏可填 0 - 3. `范围纵坐标`(整):保存范围 Y;整屏可填 0 - 4. `范围宽度`(整):保存范围宽;整屏可填 0 - 5. `范围高度`(整):保存范围高;整屏可填 0 返回值(返回值可以不接收): - 1. `是否成功`(整):处理是否成功。 可选结果:1=处理成功;0=输入内容、图片绝对路径或处理参数无效 ### 裁剪图片区域 `Image.crop(源图片: string, 输出路径: string, 范围横坐标: integer, 范围纵坐标: integer, 范围宽度: integer, 范围高度: integer): integer` 按左上角 X、Y、宽和高裁剪图片;超出图片边界的部分不会保存。 参数: - 1. `源图片`(字):源图片的绝对路径,必须包含文件名。示例:/sdcard/原图.png - 2. `输出路径`(字):输出文件绝对路径,必须包含文件名和后缀。示例:/sdcard/结果.png - 3. `范围横坐标`(整):源图片中裁剪区域左上角 X 坐标。 - 4. `范围纵坐标`(整):源图片中裁剪区域左上角 Y 坐标。 - 5. `范围宽度`(整):要裁剪的区域宽度,必须大于 0。 - 6. `范围高度`(整):要裁剪的区域高度,必须大于 0。 返回值(返回值可以不接收): - 1. `是否成功`(整):处理是否成功。 可选结果:1=处理成功;0=输入内容、图片绝对路径或处理参数无效 ### 缩放图片 `Image.resize(源图片: string, 输出路径: string, 目标宽度: integer, 目标高度: integer): integer` 把源图片缩放为指定的目标宽度和高度,并将结果保存到输出路径。目标宽度和目标高度的单位都是像素,且必须大于 0;图片会严格缩放到填写的宽高,不会自动保持原图比例。宽、高参数已拆分为对应的常用像素值,四组快捷值按列表顺序一一对应。调用示例:Image.resize("/sdcard/原图.png","/sdcard/缩放后.png",960,540),会生成一张 960×540 的图片。 参数: - 1. `源图片`(字):源图片的绝对路径,必须包含文件名。示例:/sdcard/原图.png - 2. `输出路径`(字):输出文件绝对路径,必须包含文件名和后缀。示例:/sdcard/结果.png - 3. `目标宽度`(整):缩放后图片的宽度,单位像素;快捷值依次为 1080、900、720、540,也可手动填写任意正整数。 - 4. `目标高度`(整):缩放后图片的高度,单位像素;快捷值依次为 1920、1600、1280、960,也可手动填写任意正整数。 返回值(返回值可以不接收): - 1. `是否成功`(整):处理是否成功。 可选结果:1=处理成功;0=输入内容、图片绝对路径或处理参数无效 ### 旋转图片角度 `Image.rotate(源图片: string, 输出路径: string, 旋转角度: number): integer` 按任意角度顺时针旋转图片,并自动扩展画布避免裁掉四角。 参数: - 1. `源图片`(字):源图片的绝对路径,必须包含文件名。示例:/sdcard/原图.png - 2. `输出路径`(字):输出文件绝对路径,必须包含文件名和后缀。示例:/sdcard/结果.png - 3. `旋转角度`(浮):顺时针旋转角度,可手动填写任意整数或小数;快捷值仅为常用预设 返回值(返回值可以不接收): - 1. `是否成功`(整):处理是否成功。 可选结果:1=处理成功;0=输入内容、图片绝对路径或处理参数无效 ### 拼接两张图片 `Image.concat(第一张图片: string, 第二张图片: string, 输出路径: string, 拼接方向: integer): integer` 把两张图片横向或纵向拼接;不缩放图片,较小图片在另一方向居中。 参数: - 1. `第一张图片`(字):第一张图片的绝对路径,必须包含文件名。示例:/sdcard/第一张.png - 2. `第二张图片`(字):第二张图片的绝对路径,必须包含文件名。示例:/sdcard/第二张.png - 3. `输出路径`(字):输出文件绝对路径,必须包含文件名和后缀。示例:/sdcard/结果.png - 4. `拼接方向`(整):0 横向,把第二张图片放在右侧;1 纵向,把第二张图片放在下方 返回值(返回值可以不接收): - 1. `是否成功`(整):处理是否成功。 可选结果:1=处理成功;0=输入内容、图片绝对路径或处理参数无效 ### 转换图片格式 `Image.convert(源图片: string, 输出路径: string, 图片质量: integer): integer` 按输出文件后缀转换图片格式,常用 PNG、JPG、WebP、BMP 和 TIFF。 参数: - 1. `源图片`(字):源图片的绝对路径,必须包含文件名。示例:/sdcard/原图.png - 2. `输出路径`(字):输出文件绝对路径,必须包含文件名和后缀。示例:/sdcard/结果.png - 3. `图片质量`(整):范围 1~100,默认 90;JPG、WebP 控制画质,PNG 控制压缩程度。快捷值仅为预设,可手动填写;可省略,默认 90 返回值(返回值可以不接收): - 1. `是否成功`(整):处理是否成功。 可选结果:1=处理成功;0=输入内容、图片绝对路径或处理参数无效 ### 翻转图片方向 `Image.flip(源图片: string, 输出路径: string, 翻转方向: integer): integer` 按水平、垂直或双向翻转源图片。 参数: - 1. `源图片`(字):源图片的绝对路径,必须包含文件名。示例:/sdcard/原图.png - 2. `输出路径`(字):输出文件绝对路径,必须包含文件名和后缀。示例:/sdcard/结果.png - 3. `翻转方向`(整):翻转方式:0 水平,1 垂直,2 水平并垂直。 返回值(返回值可以不接收): - 1. `是否成功`(整):处理是否成功。 可选结果:1=处理成功;0=输入内容、图片绝对路径或处理参数无效 ### 转换灰度图片 `Image.grayscale(源图片: string, 输出路径: string): integer` 把彩色图片转换为灰度图片。 参数: - 1. `源图片`(字):源图片的绝对路径,必须包含文件名。示例:/sdcard/原图.png - 2. `输出路径`(字):输出文件绝对路径,必须包含文件名和后缀。示例:/sdcard/结果.png 返回值(返回值可以不接收): - 1. `是否成功`(整):处理是否成功。 可选结果:1=处理成功;0=输入内容、图片绝对路径或处理参数无效 ### 阈值二值化 `Image.threshold(源图片: string, 输出路径: string, 灰度阈值: integer, 是否反转: integer): integer` 按灰度阈值生成黑白图片,适合明暗分离明显的内容。 参数: - 1. `源图片`(字):源图片的绝对路径,必须包含文件名。示例:/sdcard/原图.png - 2. `输出路径`(字):输出文件绝对路径,必须包含文件名和后缀。示例:/sdcard/结果.png - 3. `灰度阈值`(整):灰度阈值范围 0~255;快捷值仅为常用预设,可手动填写 - 4. `是否反转`(整):0 保持黑白结果,1 反转黑白结果。 返回值(返回值可以不接收): - 1. `是否成功`(整):处理是否成功。 可选结果:1=处理成功;0=输入内容、图片绝对路径或处理参数无效 ### 颜色二值化 `Image.colorMask(源图片: string, 输出路径: string, 滤色值: string, 颜色容差: integer, 是否反转: integer): integer` 按滤色值和容差生成黑白图片,匹配颜色保留为前景,其余像素变为背景。 参数: - 1. `源图片`(字):源图片的绝对路径,必须包含文件名。示例:/sdcard/原图.png - 2. `输出路径`(字):输出文件绝对路径,必须包含文件名和后缀。示例:/sdcard/结果.png - 3. `滤色值`(字):需要保留为前景的 HEX 颜色,格式 #RRGGBB;多个颜色用 | 分隔。示例:#FFFFFF|#FF0000 - 4. `颜色容差`(整):范围 0~255;0 最严格,数值越大范围越宽。快捷值仅为常用预设,可手动填写 - 5. `是否反转`(整):0 保持黑白结果,1 反转黑白结果。 返回值(返回值可以不接收): - 1. `是否成功`(整):处理是否成功。 可选结果:1=处理成功;0=输入内容、图片绝对路径或处理参数无效 ### 替换图片颜色 `Image.replaceColor(源图片: string, 输出路径: string, 原颜色: string, 新颜色: string, 颜色容差: integer): integer` 把源图片中接近原颜色的像素替换为新颜色。 参数: - 1. `源图片`(字):源图片的绝对路径,必须包含文件名。示例:/sdcard/原图.png - 2. `输出路径`(字):输出文件绝对路径,必须包含文件名和后缀。示例:/sdcard/结果.png - 3. `原颜色`(字):需要替换的原颜色,格式 #RRGGBB。示例:#FF0000 - 4. `新颜色`(字):替换后的新颜色,格式 #RRGGBB。示例:#FF0000 - 5. `颜色容差`(整):范围 0~255;0 最严格,数值越大范围越宽。快捷值仅为常用预设,可手动填写 返回值(返回值可以不接收): - 1. `是否成功`(整):处理是否成功。 可选结果:1=处理成功;0=输入内容、图片绝对路径或处理参数无效 ### 获取图片信息 `Image.info(源图片: string): (integer, integer, integer)` 读取绝对路径图片的宽度、高度和通道数。 参数: - 1. `源图片`(字):源图片的绝对路径,必须包含文件名。示例:/sdcard/原图.png 返回值(至少接收一个返回值): - 1. `图片宽度`(整):图片宽;读取失败时为 0。 - 2. `图片高度`(整):图片高;读取失败时为 0。 - 3. `通道数量`(整):图片通道数;读取失败时为 0。 ### 比较图片相似度 `Image.similarity(第一张图片: string, 第二张图片: string): number` 比较两张同尺寸图片的整体像素相似度。 参数: - 1. `第一张图片`(字):第一张图片的绝对路径,必须包含文件名。示例:/sdcard/第一张.png - 2. `第二张图片`(字):第二张图片的绝对路径,必须包含文件名。示例:/sdcard/第二张.png 返回值(至少接收一个返回值): - 1. `相似度`(浮):相似度范围 0~1,四舍五入保留两位小数;读取失败或尺寸不同时为 0。 ### 识别二维码 `Image.qrDecode(源图片: string): string` 读取图片并返回其中第一个二维码的文字内容。 参数: - 1. `源图片`(字):源图片的绝对路径,必须包含文件名。示例:/sdcard/原图.png 返回值(至少接收一个返回值): - 1. `识别文字`(字):二维码文字内容;没有二维码、无法解码或图片读取失败时为空字符。 ### 生成二维码 `Image.qrEncode(二维码内容: string, 输出路径: string, 图片尺寸: integer): integer` 把文字生成黑白二维码图片并保存到绝对路径。 参数: - 1. `二维码内容`(字):要写入二维码的文字或网址。示例:https://www.baidu.com - 2. `输出路径`(字):输出文件绝对路径,必须包含文件名和后缀。示例:/sdcard/结果.png - 3. `图片尺寸`(整):二维码正方形边长,单位像素,默认 512;快捷值仅为预设,可手动填写任意正数;可省略,默认 512 返回值(返回值可以不接收): - 1. `是否成功`(整):处理是否成功。 可选结果:1=处理成功;0=输入内容、图片绝对路径或处理参数无效 ## 图像函数 / 点阵找字 ### 点阵找字 `Image.ocr(点阵字库: string, 范围横坐标: integer, 范围纵坐标: integer, 范围宽度: integer, 范围高度: integer, 匹配相似度: number, 查找方向: integer): string` 使用点阵字库识别文字;没有识别到内容时返回空字符。 参数: - 1. `点阵字库`(字):点阵字库 JSON 路径。相对路径示例:字库.json;绝对路径示例:/sdcard/字库.json - 2. `范围横坐标`(整):识别区域左上角 X 坐标;四个范围参数都填 0 时使用全屏。 - 3. `范围纵坐标`(整):识别区域左上角 Y 坐标;四个范围参数都填 0 时使用全屏。 - 4. `范围宽度`(整):识别区域宽度;四个范围参数都填 0 时使用全屏。 - 5. `范围高度`(整):识别区域高度;四个范围参数都填 0 时使用全屏。 - 6. `匹配相似度`(浮):范围 0.01~1.0;快捷值仅为常用预设,可手动填写 - 7. `查找方向`(整):扫描顺序:0 左上到右下,1 右上到左下,2 左下到右上,3 右下到左上。 返回值(至少接收一个返回值): - 1. `识别文字`(字):返回按查找方向拼接的识别文字。 ### 点阵找字图像结果 `Image.ocrEx(点阵字库: string, 范围横坐标: integer, 范围纵坐标: integer, 范围宽度: integer, 范围高度: integer, 匹配相似度: number, 查找方向: integer): image` 识别文字并保留每个字符的位置、大小和相似度。 参数: - 1. `点阵字库`(字):点阵字库 JSON 路径。相对路径示例:字库.json;绝对路径示例:/sdcard/字库.json - 2. `范围横坐标`(整):识别区域左上角 X 坐标;四个范围参数都填 0 时使用全屏。 - 3. `范围纵坐标`(整):识别区域左上角 Y 坐标;四个范围参数都填 0 时使用全屏。 - 4. `范围宽度`(整):识别区域宽度;四个范围参数都填 0 时使用全屏。 - 5. `范围高度`(整):识别区域高度;四个范围参数都填 0 时使用全屏。 - 6. `匹配相似度`(浮):范围 0.01~1.0;快捷值仅为常用预设,可手动填写 - 7. `查找方向`(整):扫描顺序:0 左上到右下,1 右上到左下,2 左下到右上,3 右下到左上。 返回值(至少接收一个返回值): - 1. `图像结果`(图):返回统一图像结果集合,未命中时总个数为 0。每项只包含名称、X、Y、宽、高和相似度;使用获取名称、获取X、获取Y、获取宽、获取高和获取相似度读取。相似度范围为 0~1,保留两位小数。 ## 图像函数 / 多点找色 ### 多点找色 `Image.color(范围起点横坐标: integer, 范围起点纵坐标: integer, 范围终点横坐标: integer, 范围终点纵坐标: integer, 查找方向: integer, 匹配相似度: number, 多点数据: string): image` 读取指定多点数据,在范围内查找一次并返回图像结果。 参数: - 1. `范围起点横坐标`(整):查找范围起点 X - 2. `范围起点纵坐标`(整):查找范围起点 Y - 3. `范围终点横坐标`(整):查找范围终点 X - 4. `范围终点纵坐标`(整):查找范围终点 Y - 5. `查找方向`(整):扫描顺序:0 左上到右下,1 右上到左下,2 左下到右上,3 右下到左上。 - 6. `匹配相似度`(浮):范围 0.01~1.0;快捷值仅为常用预设,可手动填写 - 7. `多点数据`(字):项目多点数据的目录和记录名称 返回值(至少接收一个返回值): - 1. `图像结果`(图):返回统一图像结果集合,未命中时总个数为 0。每项只包含名称、X、Y、宽、高和相似度;使用获取名称、获取X、获取Y、获取宽、获取高和获取相似度读取。相似度范围为 0~1,保留两位小数。 ### 多点批量找色 `Image.colorBatch(范围起点横坐标: integer, 范围起点纵坐标: integer, 范围终点横坐标: integer, 范围终点纵坐标: integer, 查找方向: integer, 匹配相似度: number, 数据目录: string): image` 按数据文件中的记录顺序查找,返回全部成功结果。 参数: - 1. `范围起点横坐标`(整):查找范围起点 X - 2. `范围起点纵坐标`(整):查找范围起点 Y - 3. `范围终点横坐标`(整):查找范围终点 X - 4. `范围终点纵坐标`(整):查找范围终点 Y - 5. `查找方向`(整):扫描顺序:0 左上到右下,1 右上到左下,2 左下到右上,3 右下到左上。 - 6. `匹配相似度`(浮):范围 0.01~1.0;快捷值仅为常用预设,可手动填写 - 7. `数据目录`(字):multiColor.json 所在目录。项目目录示例:图色数据;绝对路径示例:/sdcard/图色数据 返回值(至少接收一个返回值): - 1. `图像结果`(图):返回统一图像结果集合,未命中时总个数为 0。每项只包含名称、X、Y、宽、高和相似度;使用获取名称、获取X、获取Y、获取宽、获取高和获取相似度读取。相似度范围为 0~1,保留两位小数。 ## 图像函数 / OpenCV找图 ### OpenCV找图 `Image.match(模板图片: string, 匹配相似度: number, 范围横坐标: integer, 范围纵坐标: integer, 范围宽度: integer, 范围高度: integer, 查找方向: integer): image` 在当前截图的指定范围内查找一张 PNG 模板;未命中时图像结果数量为 0。 参数: - 1. `模板图片`(字):PNG 模板图片绝对路径。示例:/sdcard/模板.png - 2. `匹配相似度`(浮):范围 0.01~1.0;快捷值仅为常用预设,可手动填写 - 3. `范围横坐标`(整):查找区域左上角 X 坐标;四个范围参数都填 0 时使用全屏。 - 4. `范围纵坐标`(整):查找区域左上角 Y 坐标;四个范围参数都填 0 时使用全屏。 - 5. `范围宽度`(整):查找区域宽度;四个范围参数都填 0 时使用全屏。 - 6. `范围高度`(整):查找区域高度;四个范围参数都填 0 时使用全屏。 - 7. `查找方向`(整):扫描顺序:0 左上到右下,1 右上到左下,2 左下到右上,3 右下到左上。 返回值(至少接收一个返回值): - 1. `图像结果`(图):返回统一图像结果集合,未命中时总个数为 0。每项只包含名称、X、Y、宽、高和相似度;使用获取名称、获取X、获取Y、获取宽、获取高和获取相似度读取。相似度范围为 0~1,保留两位小数。 ### OpenCV多模板找图 `Image.matchBatch(模板目录: string, 匹配相似度: number, 范围横坐标: integer, 范围纵坐标: integer, 范围宽度: integer, 范围高度: integer, 查找方向: integer): image` 依次查找目录内的全部 PNG 模板,返回所有命中结果;目录内其他格式会被忽略。 参数: - 1. `模板目录`(字):存放 PNG 模板的目录绝对路径。示例:/sdcard/模板 - 2. `匹配相似度`(浮):范围 0.01~1.0;快捷值仅为常用预设,可手动填写 - 3. `范围横坐标`(整):查找区域左上角 X 坐标;四个范围参数都填 0 时使用全屏。 - 4. `范围纵坐标`(整):查找区域左上角 Y 坐标;四个范围参数都填 0 时使用全屏。 - 5. `范围宽度`(整):查找区域宽度;四个范围参数都填 0 时使用全屏。 - 6. `范围高度`(整):查找区域高度;四个范围参数都填 0 时使用全屏。 - 7. `查找方向`(整):扫描顺序:0 左上到右下,1 右上到左下,2 左下到右上,3 右下到左上。 返回值(至少接收一个返回值): - 1. `图像结果`(图):返回统一图像结果集合,未命中时总个数为 0。每项只包含名称、X、Y、宽、高和相似度;使用获取名称、获取X、获取Y、获取宽、获取高和获取相似度读取。相似度范围为 0~1,保留两位小数。 ## 图像函数 / PP-OCRv6识字 ### PP-OCRv6图片文字识别 `Image.ppOcrImage(图片绝对路径: string, 提取类型: integer): string` 读取设备中的图片文件并识别全部文字,不使用屏幕截图和识别范围。 参数: - 1. `图片绝对路径`(字):要识别的图片绝对路径。示例:/sdcard/文字图片.png;点击“选择路径”可直接填写。 - 2. `提取类型`(整):识别完成后一次遍历文字:0 返回不过滤的完整内容;1 仅数字;2 仅英文字母;3 仅汉字;4 数字和英文;5 数字和汉字;6 中文、英文和数字。选择 1~6 会移除空格、标点、单位及其他字符,默认 0。;可省略,默认 0 返回值(至少接收一个返回值): - 1. `识别文字`(字):按阅读顺序返回文字,不同文字框之间使用换行分隔;未识别到文字时为空字符。 ### PP-OCRv6文字识别 `Image.ppOcr(范围横坐标: integer, 范围纵坐标: integer, 范围宽度: integer, 范围高度: integer, 识别模型: string, 提取类型: integer): string` 自动检测范围内的文字行并识别;识别模型填空字符时使用内置模型。 参数: - 1. `范围横坐标`(整):识别区域左上角 X 坐标;四个范围参数都填 0 时使用全屏。 - 2. `范围纵坐标`(整):识别区域左上角 Y 坐标;四个范围参数都填 0 时使用全屏。 - 3. `范围宽度`(整):识别区域宽度;四个范围参数都填 0 时使用全屏。 - 4. `范围高度`(整):识别区域高度;四个范围参数都填 0 时使用全屏。 - 5. `识别模型`(字):填空字符使用内置 PP-OCRv6-Small;自定义模型选择包含 rec.param、rec.bin、dict.txt 的目录。det.param、det.bin 可选,缺少时继续使用内置检测模型。示例:/sdcard/ppocr_model - 6. `提取类型`(整):识别完成后一次遍历文字:0 返回不过滤的完整内容;1 仅数字;2 仅英文字母;3 仅汉字;4 数字和英文;5 数字和汉字;6 中文、英文和数字。选择 1~6 会移除空格、标点、单位及其他字符,默认 0。;可省略,默认 0 返回值(至少接收一个返回值): - 1. `识别文字`(字):按阅读顺序返回文字,不同文字框之间使用换行分隔。 ### PP-OCRv6详细结果 `Image.ppOcrEx(范围横坐标: integer, 范围纵坐标: integer, 范围宽度: integer, 范围高度: integer, 识别模型: string, 提取类型: integer): image` 自动检测文字并返回每行文字的位置、大小和相似度;过滤后为空的文字框不会返回。 参数: - 1. `范围横坐标`(整):识别区域左上角 X 坐标;四个范围参数都填 0 时使用全屏。 - 2. `范围纵坐标`(整):识别区域左上角 Y 坐标;四个范围参数都填 0 时使用全屏。 - 3. `范围宽度`(整):识别区域宽度;四个范围参数都填 0 时使用全屏。 - 4. `范围高度`(整):识别区域高度;四个范围参数都填 0 时使用全屏。 - 5. `识别模型`(字):填空字符使用内置 PP-OCRv6-Small;自定义模型选择包含 rec.param、rec.bin、dict.txt 的目录。det.param、det.bin 可选,缺少时继续使用内置检测模型。示例:/sdcard/ppocr_model - 6. `提取类型`(整):识别完成后一次遍历文字:0 返回不过滤的完整内容;1 仅数字;2 仅英文字母;3 仅汉字;4 数字和英文;5 数字和汉字;6 中文、英文和数字。选择 1~6 会移除空格、标点、单位及其他字符,默认 0。;可省略,默认 0 返回值(至少接收一个返回值): - 1. `图像结果`(图):返回统一图像结果集合,未命中时总个数为 0。每项只包含名称、X、Y、宽、高和相似度;使用获取名称、获取X、获取Y、获取宽、获取高和获取相似度读取。相似度范围为 0~1,保留两位小数。 ### PP-OCRv6单行识别 `Image.ppOcrLine(范围横坐标: integer, 范围纵坐标: integer, 范围宽度: integer, 范围高度: integer, 识别模型: string, 提取类型: integer): string` 跳过文字检测,只识别紧贴选区的一行文字。 参数: - 1. `范围横坐标`(整):识别区域左上角 X 坐标;四个范围参数都填 0 时使用全屏。 - 2. `范围纵坐标`(整):识别区域左上角 Y 坐标;四个范围参数都填 0 时使用全屏。 - 3. `范围宽度`(整):识别区域宽度;四个范围参数都填 0 时使用全屏。 - 4. `范围高度`(整):识别区域高度;四个范围参数都填 0 时使用全屏。 - 5. `识别模型`(字):填空字符使用内置 PP-OCRv6-Small;自定义模型选择包含 rec.param、rec.bin、dict.txt 的目录。det.param、det.bin 可选,缺少时继续使用内置检测模型。示例:/sdcard/ppocr_model - 6. `提取类型`(整):识别完成后一次遍历文字:0 返回不过滤的完整内容;1 仅数字;2 仅英文字母;3 仅汉字;4 数字和英文;5 数字和汉字;6 中文、英文和数字。选择 1~6 会移除空格、标点、单位及其他字符,默认 0。;可省略,默认 0 返回值(至少接收一个返回值): - 1. `识别文字`(字):返回单行文字;整屏或多行内容应使用普通文字识别。 ### PP-OCRv6释放缓存 `Image.releasePpOcrCache()` 释放驻留内存的检测模型、识别模型和字符字典;下次识别时重新加载。 参数:无。 返回值:无。 ## 文件函数 / 文件操作 ### 读取文件 `File.read(path: string): string` 读取指定文件的全部文本内容。 参数: - 1. `path`(字):要读取的文件绝对路径。示例:/sdcard/测试.txt 返回值(至少接收一个返回值): - 1. `content`(字):文件文本;空文件或读取失败时为空字符。 可选结果:文件内容=读取成功;""=空文件或读取失败 ### 写入文件 `File.write(path: string, content: string, mode: integer): integer` 把文本覆盖写入文件,或追加到文件末尾。 参数: - 1. `path`(字):要写入的文件绝对路径。示例:/sdcard/测试.txt - 2. `content`(字):要写入的文本内容,例如 "测试内容" 或字符变量。 - 3. `mode`(整):写入方式:0 覆盖,1 追加。 返回值(返回值可以不接收): - 1. `status`(整):操作状态。 可选结果:1=操作成功;0=操作失败 ### 删除文件 `File.remove(path: string): integer` 删除文件或递归删除文件夹。 参数: - 1. `path`(字):要删除的文件或目录绝对路径。示例:/sdcard/测试.txt 返回值(返回值可以不接收): - 1. `status`(整):操作状态。 可选结果:1=操作成功;0=操作失败 ### 复制文件 `File.copy(source: string, target: string, conflictMode: integer): integer` 复制文件或文件夹到目标路径。 参数: - 1. `source`(字):源文件或目录绝对路径。示例:/sdcard/测试.txt - 2. `target`(字):目标绝对路径。示例:/sdcard/备份/测试.txt - 3. `conflictMode`(整):目标已存在时:0 操作失败,1 替换目标。 返回值(返回值可以不接收): - 1. `status`(整):操作状态。 可选结果:1=操作成功;0=操作失败 ### 移动文件 `File.move(source: string, target: string, conflictMode: integer): integer` 移动文件或文件夹到目标路径。 参数: - 1. `source`(字):源文件或目录绝对路径。示例:/sdcard/测试.txt - 2. `target`(字):移动后的绝对路径。示例:/sdcard/归档/测试.txt - 3. `conflictMode`(整):目标已存在时:0 操作失败,1 替换目标。 返回值(返回值可以不接收): - 1. `status`(整):操作状态。 可选结果:1=操作成功;0=操作失败 ### 重命名 `File.rename(source: string, target: string): integer` 重命名文件或文件夹;目标已存在时失败。 参数: - 1. `source`(字):原文件或目录绝对路径。示例:/sdcard/测试.txt - 2. `target`(字):包含新名称的绝对路径。示例:/sdcard/新名称.txt 返回值(返回值可以不接收): - 1. `status`(整):操作状态。 可选结果:1=操作成功;0=操作失败 ### 文件转Base64 `File.toBase64(文件路径: string): string` 读取任意文件并转换为标准 Base64 字符串。 参数: - 1. `文件路径`(字):要转换的文件绝对路径。示例:/sdcard/测试.txt 返回值(至少接收一个返回值): - 1. `Base64字符`(字):不带换行的 Base64 内容;空文件或读取失败时为空字符。 可选结果:Base64字符=转换成功;""=空文件或读取失败 ### Base64转文件 `File.fromBase64(Base64字符: string, 保存路径: string): integer` 把标准 Base64 内容还原并保存为文件。 参数: - 1. `Base64字符`(字):要还原的标准 Base64 内容或字符变量。 - 2. `保存路径`(字):还原文件的绝对路径。示例:/sdcard/测试.txt 返回值(返回值可以不接收): - 1. `status`(整):操作状态。 可选结果:1=操作成功;0=操作失败 ## 文件函数 / 文件信息 ### 路径存在 `File.exists(path: string): integer` 判断路径是否存在,文件和文件夹都可以判断。 参数: - 1. `path`(字):要判断的文件或目录绝对路径。示例:/sdcard/测试.txt 返回值(返回值可以不接收): - 1. `exists`(整):路径是否存在。 可选结果:1=路径存在;0=路径不存在 ### 文件存在 `File.isFile(path: string): integer` 判断路径是否指向一个已存在的普通文件。 参数: - 1. `path`(字):要判断的文件绝对路径。示例:/sdcard/测试.txt 返回值(返回值可以不接收): - 1. `isFile`(整):路径是否为文件。 可选结果:1=文件存在;0=文件不存在或不是文件 ### 文件大小 `File.size(path: string): integer` 获取文件字节数;传入文件夹时统计其中所有文件的总大小。 参数: - 1. `path`(字):要统计的文件或目录绝对路径。示例:/sdcard/测试目录 返回值(至少接收一个返回值): - 1. `bytes`(整):文件或目录的总字节数。 可选结果:大于0=统计到内容;0=空文件、空文件夹或读取失败 ### 获取后缀 `File.ext(path: string): string` 获取文件路径中的后缀名。 参数: - 1. `path`(字):文件绝对路径。示例:/sdcard/测试.txt 返回值(至少接收一个返回值): - 1. `extension`(字):包含点号的文件后缀。 可选结果:.txt=存在后缀时的示例;""=无后缀或读取失败 ### 格式化大小 `File.sizeText(bytes: integer): string` 把字节数格式化为便于阅读的大小文本。 参数: - 1. `bytes`(整):要格式化的字节数。示例:1024 返回 1.00KB。 返回值(至少接收一个返回值): - 1. `text`(字):格式化后的文件大小文本。 可选结果:1.00KB=格式化示例;0.00B=输入为0或无效 ## 文件函数 / 目录操作 ### 创建目录 `File.mkdir(path: string): integer` 创建文件夹;父级不存在时会一并创建。 参数: - 1. `path`(字):要创建的目录绝对路径。示例:/sdcard/测试目录 返回值(返回值可以不接收): - 1. `status`(整):操作状态。 可选结果:1=操作成功;0=操作失败 ### 目录存在 `File.isDir(path: string): integer` 判断路径是否指向一个已存在的文件夹。 参数: - 1. `path`(字):要判断的目录绝对路径。示例:/sdcard/测试目录 返回值(返回值可以不接收): - 1. `isDirectory`(整):路径是否为文件夹。 可选结果:1=目录存在;0=目录不存在或不是文件夹 ### 文件数量 `File.files(directory: string): integer` 统计目录下一层普通文件数量,不递归子目录。 参数: - 1. `directory`(字):要统计的目录绝对路径。示例:/sdcard/测试目录 返回值(至少接收一个返回值): - 1. `fileCount`(整):普通文件数量;失败时返回0。 可选结果:大于0=统计到内容;0=没有内容或统计失败 ### 文件夹数量 `File.dirs(directory: string): integer` 统计目录下一层文件夹数量,不递归子目录。 参数: - 1. `directory`(字):要统计的目录绝对路径。示例:/sdcard/测试目录 返回值(至少接收一个返回值): - 1. `directoryCount`(整):文件夹数量;失败时返回0。 可选结果:大于0=统计到内容;0=没有内容或统计失败 ### 指定后缀数量 `File.suffix(directory: string, suffix: string): integer` 统计目录下一层指定后缀的文件数量,不递归子目录。 参数: - 1. `directory`(字):要统计的目录绝对路径。示例:/sdcard/测试目录 - 2. `suffix`(字):要统计的文件后缀。示例:.txt 或 txt。 返回值(至少接收一个返回值): - 1. `fileCount`(整):匹配后缀的文件数量;失败时返回0。 可选结果:大于0=统计到内容;0=没有内容或统计失败 ### 目录统计 `File.stats(directory: string): string` 同时统计目录下一层的文件和文件夹数量。 参数: - 1. `directory`(字):要统计的目录绝对路径。示例:/sdcard/测试目录 返回值(返回值可以不接收): - 1. `summary`(字):文件与文件夹数量汇总文本。 可选结果:文件=3,文件夹=2=统计结果示例;文件=0,文件夹=0=空目录或统计失败 ## 文件函数 / 压缩解压 ### 压缩zip `File.zip(source: string, target: string): integer` 把文件或文件夹压缩为 zip 文件。 参数: - 1. `source`(字):要压缩的文件或目录绝对路径。示例:/sdcard/测试目录 - 2. `target`(字):生成的 zip 文件绝对路径。示例:/sdcard/测试.zip 返回值(返回值可以不接收): - 1. `status`(整):操作状态。 可选结果:1=操作成功;0=操作失败 ### 解压zip `File.unzip(source: string, target: string): integer` 把 zip 文件解压到指定目录。 参数: - 1. `source`(字):要解压的 zip 文件绝对路径。示例:/sdcard/测试.zip - 2. `target`(字):解压后的目标目录绝对路径。示例:/sdcard/测试目录 返回值(返回值可以不接收): - 1. `status`(整):操作状态。 可选结果:1=操作成功;0=操作失败 ## 网络函数 / URL访问 ### 打开URL `Network.openUrl(url: string): integer` 使用设备默认浏览器打开 HTTP 或 HTTPS 网址。成功只表示系统已经接收打开请求。 参数: - 1. `url`(字):完整网址,必须以 http:// 或 https:// 开头。示例:https://www.baidu.com 返回值(返回值可以不接收): - 1. `执行状态`(整):网址打开请求的提交结果。 可选结果:0=系统已接收打开请求;-1=网址格式无效或没有可用浏览器 ## 系统函数 / 应用操作 ### 启动应用 `System.launchApp(packageName: string): integer` 根据应用包名打开桌面入口。返回成功只表示启动请求已提交;包名错误、没有可启动入口或系统拒绝启动时返回失败。 参数: - 1. `packageName`(字):目标应用包名,可使用包名选择器填写。格式示例:com.example.app 返回值(返回值可以不接收): - 1. `执行状态`(整):成功提交启动返回0,失败返回-1。 ### 停止应用 `System.forceStopApp(packageName: string): (integer, string)` 结束指定包名的应用进程。调用前必须已连接Root或Shizuku。 参数: - 1. `packageName`(字):目标应用包名,可使用包名选择器填写。格式示例:com.example.app 返回值(返回值可以不接收): - 1. `执行状态`(整):成功返回0,失败返回-1。 - 2. `执行信息`(字):返回强停结果或缺少权限的原因。 ### 判断应用是否安装 `System.isAppInstalled(packageName: string): integer` 检查指定包名是否已安装。目标应用存在且能够查询时返回1,否则返回0。 参数: - 1. `packageName`(字):目标应用包名,可使用包名选择器填写。格式示例:com.example.app 返回值(返回值可以不接收): - 1. `安装状态`(整):已安装返回1,未安装或无法查询返回0。 ### 获取当前前台应用 `System.currentApp(): string` 返回当前前台窗口所属应用的包名。应先连接无障碍服务;连接Root或Shizuku时也可用于兜底查询。 参数:无。 返回值(返回值可以不接收): - 1. `应用包名`(字):成功返回前台应用包名,无法获取时返回空字符串。 ## 系统函数 / 设备信息 ### 获取屏幕状态 `System.screenState(): (integer, integer)` 读取屏幕是否点亮,以及设备是否处于锁屏状态。 参数:无。 返回值(返回值可以不接收): - 1. `屏幕点亮`(整):屏幕点亮返回1,熄灭返回0。 - 2. `设备锁定`(整):设备已锁定返回1,未锁定返回0。 ### 获取设备信息 `System.device(key: string): string` 按信息项返回设备资料。mac表示当前可读取的WLAN或Wi-Fi网卡地址;系统隐藏或随机化地址时可能返回空字符串或随机地址,不能用作永久设备唯一标识。 参数: - 1. `key`(字):要读取的设备信息项。 返回值(返回值可以不接收): - 1. `设备信息`(字):返回所选设备信息;信息项无效时返回空字符串。 ### 获取屏幕分辨率 `System.screen(): (integer, integer)` 返回设备完整显示区域的像素宽度和高度,顺序固定为宽、高。 参数:无。 返回值(返回值可以不接收): - 1. `屏幕宽`(整):屏幕像素宽度,查询失败返回0。 - 2. `屏幕高`(整):屏幕像素高度,查询失败返回0。 ### 获取屏幕亮度 `System.brightness(): integer` 读取设备当前屏幕亮度设置,数值范围为0到255。 参数:无。 返回值(返回值可以不接收): - 1. `屏幕亮度`(整):成功返回0到255,读取失败返回-1。 ### 获取自动熄屏时间 `System.screenTimeout(): integer` 读取设备无操作后自动熄屏的等待时间。 参数:无。 返回值(返回值可以不接收): - 1. `等待时间`(整):成功返回毫秒数,读取失败返回-1。 ### 获取系统日期 `System.date(): (integer, integer, integer, integer)` 返回设备当前时区下的年、月、日和星期。星期一为1,依次递增,星期日为7。 参数:无。 返回值(返回值可以不接收): - 1. `年`(整):四位年份。 - 2. `月`(整):月份,范围1到12。 - 3. `日`(整):当月日期,范围1到31。 - 4. `星期`(整):星期一为1,星期日为7。 ### 获取系统时间 `System.time(): (integer, integer, integer, integer)` 返回设备当前时区下的时、分、秒和毫秒,使用24小时制。 参数:无。 返回值(返回值可以不接收): - 1. `时`(整):小时,范围0到23。 - 2. `分`(整):分钟,范围0到59。 - 3. `秒`(整):秒,范围0到59。 - 4. `毫秒`(整):当前秒内的毫秒,范围0到999。 ### 获取系统时间戳 `System.timeMillis(): integer` 返回设备当前系统时间对应的13位Unix毫秒时间戳。修改设备日期时间后,这个值会随系统时钟变化。 参数:无。 返回值(返回值可以不接收): - 1. `毫秒时间戳`(整):从1970-01-01 00:00:00 UTC开始计算的整数毫秒数。 ### 获取完整日期时间 `System.dateTime(): string` 返回设备当前时区下的日期时间,固定格式为yyyy-MM-dd HH:mm:ss。 参数:无。 返回值(返回值可以不接收): - 1. `日期时间`(字):固定格式示例:2026-07-24 12:30:45。 ### 判断网络是否连接 `System.isConnected(): integer` 判断设备当前是否存在具备互联网能力的活动网络。 参数:无。 返回值(返回值可以不接收): - 1. `连接状态`(整):已连接返回1,未连接返回0,查询失败返回-1。 ### 判断互联网是否可用 `System.isValidated(): integer` 判断当前网络是否已经通过系统的互联网连通性验证。网络已连接但无法访问互联网时返回0。 参数:无。 返回值(返回值可以不接收): - 1. `可用状态`(整):互联网可用返回1,不可用返回0,查询失败返回-1。 ### 判断Wi-Fi是否开启 `System.isWifiEnabled(): integer` 读取设备当前的Wi-Fi开关状态。 参数:无。 返回值(返回值可以不接收): - 1. `开启状态`(整):Wi-Fi已开启返回1,已关闭返回0,查询失败返回-1。 ## 系统函数 / 系统控制 ### 读取剪贴板 `System.getClipboard(): string` 读取系统剪贴板中的文字。系统限制后台读取、剪贴板为空或内容不是文字时返回空字符串。 参数:无。 返回值(返回值可以不接收): - 1. `剪贴板文字`(字):返回剪贴板文字,无法读取或没有内容时返回空字符串。 ### 写入剪贴板 `System.setClipboard(text: string): integer` 把指定文字写入系统剪贴板。系统可能同时显示剪贴板预览提示。 参数: - 1. `text`(字):要写入剪贴板的文字或字符变量。示例:"复制内容"。 返回值(返回值可以不接收): - 1. `执行状态`(整):写入成功返回0,失败返回-1。 ### 设备振动 `System.vibrate(durationMs: integer): integer` 立即触发一次指定时长的设备振动,最长60000毫秒。 参数: - 1. `durationMs`(整):振动时间,单位毫秒,范围 1~60000。示例:500 表示振动半秒。 返回值(返回值可以不接收): - 1. `执行状态`(整):振动成功触发返回0,失败返回-1。 ### 保持设备唤醒 `System.keepAwake(enabled: integer): integer` 开启后防止脚本运行期间屏幕自动熄灭,关闭后立即释放。脚本进程结束时会自动释放。 参数: - 1. `enabled`(整):1保持唤醒,0释放唤醒锁。 返回值(返回值可以不接收): - 1. `执行状态`(整):设置成功返回0,失败返回-1。 ### 设置Wi-Fi开关 `System.setWifi(enabled: integer): (integer, string)` 开启或关闭设备Wi-Fi。系统不允许普通应用切换时,调用前必须已连接Root或Shizuku。 参数: - 1. `enabled`(整):1开启Wi-Fi,0关闭Wi-Fi。 返回值(返回值可以不接收): - 1. `执行状态`(整):成功返回0,失败返回-1。 - 2. `执行信息`(字):返回设置结果或失败原因。 ### 清理设备内存 `System.clearMemory(): (integer, integer, integer)` 结束系统判定为可安全终止的后台进程,释放设备运行内存。不会停止前台应用、系统关键进程或清理应用数据;调用前必须已连接Root或Shizuku。 参数:无。 返回值(返回值可以不接收): - 1. `执行状态`(整):清理命令成功返回0,失败返回-1。 - 2. `清理前可用内存`(整):清理前设备可用内存,单位MB。 - 3. `清理后可用内存`(整):清理完成后设备可用内存,单位MB;系统可能立即重新分配内存,因此数值不保证增加。 ## 系统函数 / 系统设置 ### 设置屏幕亮度 `System.setBrightness(value: integer): integer` 把设备屏幕亮度设置为0到255,并关闭自动亮度。 参数: - 1. `value`(整):目标亮度,允许范围0到255。 返回值(返回值可以不接收): - 1. `执行状态`(整):设置成功返回0,失败返回-1。 ### 设置自动熄屏时间 `System.setScreenTimeout(durationMs: integer): integer` 设置设备无操作后自动熄屏的等待时间。 参数: - 1. `durationMs`(整):等待毫秒数,允许范围1000到2147483647。 返回值(返回值可以不接收): - 1. `执行状态`(整):设置成功返回0,失败返回-1。 ### 设置系统日期时间 `System.setDateTime(year: integer, month: integer, day: integer, hour: integer, minute: integer, second: integer): integer` 按年、月、日、时、分、秒修改整台设备的系统时间。必须具备Root权限;调用成功后会关闭系统自动确定时间,防止结果立即被覆盖。 参数: - 1. `year`(整):四位年份,范围1970到2099。 - 2. `month`(整):月份,范围1到12。 - 3. `day`(整):当月日期,必须符合指定年月。 - 4. `hour`(整):小时,使用24小时制,范围0到23。 - 5. `minute`(整):分钟,范围0到59。 - 6. `second`(整):秒,范围0到59。 返回值(返回值可以不接收): - 1. `执行状态`(整):成功返回0,参数或执行失败返回-1,没有Root权限返回-2。 ### 打开系统设置 `System.openSettings(page: string): integer` 根据页面名称打开网络、Wi-Fi、移动网络、无障碍、悬浮窗、本应用详情、电池优化、通知或修改系统设置页面。函数只负责打开页面,不会自动更改开关。 参数: - 1. `page`(字):要打开的系统设置页。 返回值(返回值可以不接收): - 1. `执行状态`(整):成功提交打开设置页返回0,失败返回-1。 ## 系统函数 / 命令执行 ### 执行Shell命令 `System.shell(command: string): (integer, string)` 通过已连接的Root或Shizuku环境执行一条shell命令,依次返回执行状态和命令输出。两个返回值都可以不接收。 参数: - 1. `command`(字):要执行的 Shell 命令;可从“命令选择”中填写后再修改。示例:input keyevent 3 返回桌面。 返回值(返回值可以不接收): - 1. `执行状态`(整):成功返回0,失败返回-1。 - 2. `执行信息`(字):成功时返回命令输出,无输出时返回“执行成功”;失败时返回原始状态码及错误信息。 ## 系统函数 / 音频控制 ### 播放音乐 `Audio.play(path: string, loop: integer, 执行方式: integer): integer` 播放本地音频,可选择同步等待或异步播放。 线程规则:同步模式只等待当前 Lua 脚本线程,不会阻塞 Android 界面主线程;异步模式启动成功后立即继续执行下一行。 播放规则:每次只能播放一个文件,再次调用会停止上一份。 停止规则:Audio.stop() 或脚本停止都会结束当前音频;同步循环会一直等待,异步循环不会阻塞脚本。 参数: - 1. `path`(字):音频文件绝对路径。示例:/sdcard/音乐.mp3 - 2. `loop`(整):播放方式:0 播放一次,1 循环播放。 - 3. `执行方式`(整):0 同步等待当前脚本线程,1 异步播放并立即继续;默认 0。同步不是 Android 界面主线程。;可省略,默认 0 返回值(返回值可以不接收): - 1. `执行状态`(整):同步播放完成或被停止返回0;异步模式成功启动返回0;文件无效、格式不支持或启动失败返回-1。 ### 停止音乐 `Audio.stop(): integer` 停止当前正在播放或循环播放的音频;同步播放时会让 Audio.play() 所在的脚本线程继续执行。 参数:无。 返回值(返回值可以不接收): - 1. `执行状态`(整):成功停止返回0,当前没有音频时返回-1。 ### 获取音量 `Audio.volume(type: string): (integer, integer)` 获取指定音量类型的当前值和最大值。设置音量时应使用这里返回的最大值作为上限。 参数: - 1. `type`(字):音量类型:media 媒体、notification 通知、alarm 闹钟;可直接使用快捷选择。 返回值(返回值可以不接收): - 1. `当前音量`(整):当前音量数值;查询失败返回0。 - 2. `最大音量`(整):该类型允许的最大音量;查询失败返回0。 ### 设置音量 `Audio.setVolume(type: string, value: integer): integer` 设置指定类型的系统音量。数值范围是 0 到 Audio.volume() 返回的最大音量。 参数: - 1. `type`(字):音量类型:media 媒体、notification 通知、alarm 闹钟;可直接使用快捷选择。 - 2. `value`(整):目标音量,范围为 0 到 Audio.volume() 返回的最大音量。 返回值(返回值可以不接收): - 1. `执行状态`(整):设置成功返回0,类型无效、数值越界或设置失败返回-1。 ## 数据函数 / JSON数据 ### 判断JSON是否有效 `Data.jsonValid(json: string): integer` 用途:判断传入文本是不是有效 JSON。 支持:对象、数组、字符、数字、布尔值和 null。 示例: Data.jsonValid("{\"name\":\"小明\"}") 返回 1 Data.jsonValid("{name:小明}") 返回 0 参数: - 1. `json`(字):传入完整 JSON 文本,或保存 JSON 的字符变量。 对象示例:{"name":"小明","age":18} 数组示例:[0,2,4] 基本值示例:"文字"、123、true、null 返回值(返回值可以不接收): - 1. `valid`(整):JSON 文本能否成功解析。 可选结果:1=内容是有效 JSON,包括对象、数组和基本值;0=内容为空或 JSON 格式错误 ### 获取JSON数量 `Data.jsonSize(json: string): integer` 用途:统计根数组的元素数量,或根对象的字段数量。 数组示例:Data.jsonSize("[1,3,5]") 返回 3 对象示例:Data.jsonSize("{\"name\":\"小明\",\"age\":18}") 返回 2 嵌套内容先取出再统计: 项目数组 = Data.jsonGetJson(数据,"items") 数量 = Data.jsonSize(项目数组) 参数: - 1. `json`(字):传入完整 JSON 文本,或保存 JSON 的字符变量。 对象示例:{"name":"小明","age":18} 数组示例:[0,2,4] 基本值示例:"文字"、123、true、null 返回值(返回值可以不接收): - 1. `size`(整):根数组的元素数或根对象的字段数。 可选结果:正整数=根数组或根对象实际包含的数量;0=空数组、空对象、基本值或无效 JSON ### 获取JSON键名 `Data.jsonKeys(json: string): string` 用途:获取根对象的全部字段名,方便遍历不知道名称的字段。 示例:Data.jsonKeys("{\"name\":\"小明\",\"age\":18}") 返回 ["age","name"] 遍历键名: 键名数组 = Data.jsonKeys(数据) 数量 = Data.jsonSize(键名数组) 键名 = Data.jsonGetText(键名数组,"["..整转字(position).."]") 循环时 position 从 0 到 数量-1。 参数: - 1. `json`(字):传入完整 JSON 文本,或保存 JSON 的字符变量。 对象示例:{"name":"小明","age":18} 数组示例:[0,2,4] 基本值示例:"文字"、123、true、null 返回值(返回值可以不接收): - 1. `keys`(字):由根对象字段名组成的 JSON 数组字符。 可选结果:["键名",...]=根对象存在一个或多个字段;[]=空对象、输入不是对象或 JSON 无效 ### 判断JSON字段存在 `Data.jsonHas(json: string, path: string): integer` 用途:判断路径能否找到,不读取字段内容。 路径填 "" 时判断根 JSON。 示例:数据 = {"profile":{"city":"上海"},"tags":["开发"]} Data.jsonHas(数据,"profile.city") 返回 1 Data.jsonHas(数据,"tags[1]") 返回 0 参数: - 1. `json`(字):传入完整 JSON 文本,或保存 JSON 的字符变量。 对象示例:{"name":"小明","age":18} 数组示例:[0,2,4] 基本值示例:"文字"、123、true、null - 2. `path`(字):路径填法: "":读取根值,没有字段名时使用 "name":读取根对象字段 "user.name":读取嵌套对象字段 "[0]":读取根数组第 1 项 "items[0].id":读取对象中的数组项字段 "matrix[1][2]":读取二维数组 数组索引从 0 开始。 字段名中暂不支持 .、[、]。 返回值(返回值可以不接收): - 1. `exists`(整):指定 JSON 路径是否存在。 可选结果:1=路径存在;空路径且根 JSON 有效时也返回 1;0=路径不存在、数组越界或 JSON 错误 ### 获取JSON字符字段 `Data.jsonGetText(json: string, path: string): string` 用途:读取指定路径,并把结果转换为字符。 路径填 "" 可直接读取根值。 示例:数据 = {"user":{"name":"小明"},"codes":[1001,1002]} Data.jsonGetText(数据,"user.name") 返回 小明 Data.jsonGetText(数据,"codes[0]") 返回 1001 参数: - 1. `json`(字):传入完整 JSON 文本,或保存 JSON 的字符变量。 对象示例:{"name":"小明","age":18} 数组示例:[0,2,4] 基本值示例:"文字"、123、true、null - 2. `path`(字):路径填法: "":读取根值,没有字段名时使用 "name":读取根对象字段 "user.name":读取嵌套对象字段 "[0]":读取根数组第 1 项 "items[0].id":读取对象中的数组项字段 "matrix[1][2]":读取二维数组 数组索引从 0 开始。 字段名中暂不支持 .、[、]。 返回值(返回值可以不接收): - 1. `value`(字):指定路径转换后的字符内容。 可选结果:字符内容=读取成功;数字和布尔值会转换成文字;空字符=原值为空字符或 null、路径不存在、数组越界或 JSON 无效 ### 获取JSON整数字段 `Data.jsonGetInt(json: string, path: string): integer` 用途:读取整数、数字、布尔值或数字字符,并转换为整数。 路径填 "" 可直接解析没有字段名的根值。 普通示例:Data.jsonGetInt(数据,"count") 根数组示例:Data.jsonGetInt(数组,"[0]") 遍历示例:Data.jsonGetInt(数组,"["..整转字(position).."]") 转换规则:true 返回 1,false 返回 0,2.8 返回 2。 参数: - 1. `json`(字):传入完整 JSON 文本,或保存 JSON 的字符变量。 对象示例:{"name":"小明","age":18} 数组示例:[0,2,4] 基本值示例:"文字"、123、true、null - 2. `path`(字):路径填法: "":读取根值,没有字段名时使用 "name":读取根对象字段 "user.name":读取嵌套对象字段 "[0]":读取根数组第 1 项 "items[0].id":读取对象中的数组项字段 "matrix[1][2]":读取二维数组 数组索引从 0 开始。 字段名中暂不支持 .、[、]。 返回值(返回值可以不接收): - 1. `value`(整):指定路径转换后的整数。 可选结果:任意整数=整数、数字、布尔值或数字字符转换成功;0=原值为 0/false,或路径不存在、数组越界、JSON 无效、转换失败 ### 获取JSON浮点字段 `Data.jsonGetFloat(json: string, path: string): number` 用途:读取数字、布尔值或数字字符,并转换为浮点数。 路径填 "" 可直接解析没有字段名的根值。 示例:数据 = {"price":12.5,"discount":0.8} Data.jsonGetFloat(数据,"price") 返回 12.5 Data.jsonGetFloat(数据,"discount") 返回 0.8 参数: - 1. `json`(字):传入完整 JSON 文本,或保存 JSON 的字符变量。 对象示例:{"name":"小明","age":18} 数组示例:[0,2,4] 基本值示例:"文字"、123、true、null - 2. `path`(字):路径填法: "":读取根值,没有字段名时使用 "name":读取根对象字段 "user.name":读取嵌套对象字段 "[0]":读取根数组第 1 项 "items[0].id":读取对象中的数组项字段 "matrix[1][2]":读取二维数组 数组索引从 0 开始。 字段名中暂不支持 .、[、]。 返回值(返回值可以不接收): - 1. `value`(浮):指定路径转换后的浮点数。 可选结果:浮点数=数字、布尔值或数字字符转换成功;0=原值为 0/false,或路径不存在、数组越界、JSON 无效、转换失败 ### 获取JSON布尔字段 `Data.jsonGetBool(json: string, path: string): integer` 用途:读取真假状态,并转换为整数 1 或 0。 路径填 "" 可直接解析没有字段名的根值。 示例:数据 = {"visible":true,"deleted":false} Data.jsonGetBool(数据,"visible") 返回 1 Data.jsonGetBool(数据,"deleted") 返回 0 可识别:true、非零数字、字符 true、1、yes。 参数: - 1. `json`(字):传入完整 JSON 文本,或保存 JSON 的字符变量。 对象示例:{"name":"小明","age":18} 数组示例:[0,2,4] 基本值示例:"文字"、123、true、null - 2. `path`(字):路径填法: "":读取根值,没有字段名时使用 "name":读取根对象字段 "user.name":读取嵌套对象字段 "[0]":读取根数组第 1 项 "items[0].id":读取对象中的数组项字段 "matrix[1][2]":读取二维数组 数组索引从 0 开始。 字段名中暂不支持 .、[、]。 返回值(返回值可以不接收): - 1. `value`(整):指定路径转换后的真假状态。 可选结果:1=字段为 true、非零数字或 true/1/yes 文本;0=字段为 false、0、其他文本,或路径不存在、JSON 无效 ### 获取JSON对象数组字段 `Data.jsonGetJson(json: string, path: string): string` 用途:整体取出对象、数组或原始值,结果仍是 JSON 字符。 路径填 "" 可返回完整根 JSON。 示例:订单数组 = Data.jsonGetJson(数据,"orders") 第一项ID = Data.jsonGetInt(订单数组,"[0].id") 对象返回 {...},数组返回 [...],字符值会保留 JSON 引号。 参数: - 1. `json`(字):传入完整 JSON 文本,或保存 JSON 的字符变量。 对象示例:{"name":"小明","age":18} 数组示例:[0,2,4] 基本值示例:"文字"、123、true、null - 2. `path`(字):路径填法: "":读取根值,没有字段名时使用 "name":读取根对象字段 "user.name":读取嵌套对象字段 "[0]":读取根数组第 1 项 "items[0].id":读取对象中的数组项字段 "matrix[1][2]":读取二维数组 数组索引从 0 开始。 字段名中暂不支持 .、[、]。 返回值(返回值可以不接收): - 1. `value`(字):指定路径节点的标准 JSON 字符。 可选结果:{...}/[...]/基本值=路径读取成功并序列化为 JSON;空字符=路径不存在、数组越界或 JSON 无效 ### 获取JSON字段类型 `Data.jsonType(json: string, path: string): string` 用途:获取指定路径的 JSON 类型,不读取字段内容。 路径填 "" 可判断根 JSON 类型。 返回类型:object、array、string、number、boolean、null。 示例:对象字段返回 object,数组字段返回 array,字符字段返回 string。 参数: - 1. `json`(字):传入完整 JSON 文本,或保存 JSON 的字符变量。 对象示例:{"name":"小明","age":18} 数组示例:[0,2,4] 基本值示例:"文字"、123、true、null - 2. `path`(字):路径填法: "":读取根值,没有字段名时使用 "name":读取根对象字段 "user.name":读取嵌套对象字段 "[0]":读取根数组第 1 项 "items[0].id":读取对象中的数组项字段 "matrix[1][2]":读取二维数组 数组索引从 0 开始。 字段名中暂不支持 .、[、]。 返回值(返回值可以不接收): - 1. `type`(字):指定路径节点的 JSON 类型名称。 可选结果:object/array/string/number/boolean=路径存在且值不是 null;null=值为 null、路径不存在、数组越界或 JSON 无效 ## 数据函数 / 字符串处理 ### 获取字符长度 `Data.textLength(text: string): integer` 按 Unicode 字符统计,不按 UTF-8 字节统计。 中文、英文、数字和普通符号各计 1;示例:Data.textLength("中文AbC123,。") 返回 10 参数: - 1. `text`(字):原始文本,即本次要查询、截取或修改的完整内容。 可选择字符变量,或填写带英文双引号的固定文本。 示例:"中文ABC123" 返回值(至少接收一个返回值): - 1. `length`(整):Unicode 字符数量。 可选结果:大于0=统计到字符或匹配项;0=内容为空或没有匹配项 ### 查找字符位置 `Data.textFind(text: string, target: string, start: integer): integer` 查找 target 第一次出现的位置,位置从 1 开始;未找到返回 0。 示例:Data.textFind("中文ABC123","ABC") 返回 3 参数: - 1. `text`(字):原始文本,即本次要查询、截取或修改的完整内容。 可选择字符变量,或填写带英文双引号的固定文本。 示例:"中文ABC123" - 2. `target`(字):要查找的完整内容。 可选择字符变量,或填写带英文双引号的固定文本。 示例:"ABC" - 3. `start`(整):从第几个字符开始查找,索引从 1 开始。 可填写整数变量或数字;省略时默认为 1。;可省略,默认 1 返回值(至少接收一个返回值): - 1. `position`(整):首次匹配的字符位置。 可选结果:大于0=找到内容,从 1 开始;0=没有找到或查找内容为空 ### 判断是否包含 `Data.textContains(text: string, target: string): integer` 判断 text 中是否出现 target,返回 1 或 0。 示例:Data.textContains("中文ABC123","ABC") 返回 1 参数: - 1. `text`(字):原始文本,即本次要查询、截取或修改的完整内容。 可选择字符变量,或填写带英文双引号的固定文本。 示例:"中文ABC123" - 2. `target`(字):要判断的完整内容。 可选择字符变量,或填写带英文双引号的固定文本。 示例:"ABC" 返回值(至少接收一个返回值): - 1. `contains`(整):是否包含指定内容。 可选结果:1=条件成立;0=条件不成立 ### 判断指定开头 `Data.textStartsWith(text: string, prefix: string): integer` 判断 text 是否以 prefix 开头,返回 1 或 0。 示例:Data.textStartsWith("中文ABC","中文") 返回 1 参数: - 1. `text`(字):原始文本,即本次要查询、截取或修改的完整内容。 可选择字符变量,或填写带英文双引号的固定文本。 示例:"中文ABC123" - 2. `prefix`(字):要判断的开头内容。 可选择字符变量,或填写带英文双引号的固定文本。 示例:"中文" 返回值(至少接收一个返回值): - 1. `startsWith`(整):是否以指定内容开头。 可选结果:1=条件成立;0=条件不成立 ### 判断指定结尾 `Data.textEndsWith(text: string, suffix: string): integer` 判断 text 是否以 suffix 结尾,返回 1 或 0。 示例:Data.textEndsWith("中文ABC","ABC") 返回 1 参数: - 1. `text`(字):原始文本,即本次要查询、截取或修改的完整内容。 可选择字符变量,或填写带英文双引号的固定文本。 示例:"中文ABC123" - 2. `suffix`(字):要判断的结尾内容。 可选择字符变量,或填写带英文双引号的固定文本。 示例:"ABC" 返回值(至少接收一个返回值): - 1. `endsWith`(整):是否以指定内容结尾。 可选结果:1=条件成立;0=条件不成立 ### 统计出现次数 `Data.textCount(text: string, target: string): integer` 统计 target 非重叠出现的次数;没有出现返回 0。 示例:Data.textCount("A-A-A","A") 返回 3 参数: - 1. `text`(字):原始文本,即本次要查询、截取或修改的完整内容。 可选择字符变量,或填写带英文双引号的固定文本。 示例:"中文ABC123" - 2. `target`(字):要统计的完整内容。 可选择字符变量,或填写带英文双引号的固定文本。 示例:"A" 返回值(至少接收一个返回值): - 1. `count`(整):匹配内容非重叠出现的次数。 可选结果:大于0=统计到字符或匹配项;0=内容为空或没有匹配项 ### 按位置截取 `Data.textSub(text: string, start: integer, length: integer): string` 从 start 开始截取 length 个 Unicode 字符,索引从 1 开始。 示例:Data.textSub("中文ABC123",3,6) 返回 ABC123 参数: - 1. `text`(字):原始文本,即本次要查询、截取或修改的完整内容。 可选择字符变量,或填写带英文双引号的固定文本。 示例:"中文ABC123" - 2. `start`(整):起始字符位置,从 1 开始。 示例:3 表示从第 3 个字符开始。 - 3. `length`(整):要截取的字符数量,不是结束位置。 示例:6 表示最多取 6 个字符。 返回值(至少接收一个返回值): - 1. `text`(字):截取结果;起点越界或长度小于等于 0 时为空字符。 可选结果:字符内容=处理成功;""=原结果为空或参数范围无效 ### 截取左侧字符 `Data.textLeft(text: string, count: integer): string` 从 text 最左侧截取 count 个 Unicode 字符。 示例:Data.textLeft("中文ABC",3) 返回 中文A 参数: - 1. `text`(字):原始文本,即本次要查询、截取或修改的完整内容。 可选择字符变量,或填写带英文双引号的固定文本。 示例:"中文ABC123" - 2. `count`(整):从左侧获取的字符数量;可填写整数变量或数字。 返回值(至少接收一个返回值): - 1. `text`(字):左侧截取结果;数量小于等于 0 时为空字符。 可选结果:字符内容=处理成功;""=原结果为空或参数范围无效 ### 截取右侧字符 `Data.textRight(text: string, count: integer): string` 从 text 最右侧截取 count 个 Unicode 字符。 示例:Data.textRight("中文ABC",3) 返回 ABC 参数: - 1. `text`(字):原始文本,即本次要查询、截取或修改的完整内容。 可选择字符变量,或填写带英文双引号的固定文本。 示例:"中文ABC123" - 2. `count`(整):从右侧获取的字符数量;可填写整数变量或数字。 返回值(至少接收一个返回值): - 1. `text`(字):右侧截取结果;数量小于等于 0 时为空字符。 可选结果:字符内容=处理成功;""=原结果为空或参数范围无效 ### 截取标记前 `Data.textBefore(text: string, marker: string): string` 返回第一个 marker 之前的全部内容,不包含 marker。 示例:Data.textBefore("key=value","=") 返回 key 参数: - 1. `text`(字):原始文本,即本次要查询、截取或修改的完整内容。 可选择字符变量,或填写带英文双引号的固定文本。 示例:"中文ABC123" - 2. `marker`(字):作为截取边界的完整标记。 可选择字符变量,或填写带英文双引号的固定文本。 示例:"=" 返回值(至少接收一个返回值): - 1. `text`(字):第一个标记之前的内容;标记为空或不存在时为空字符。 可选结果:字符内容=处理成功;""=原结果为空或参数范围无效 ### 截取两标记间 `Data.textBetween(text: string, left: string, right: string): string` 先找第一个 left,再找它后面的第一个 right,返回两者之间的内容。 示例:Data.textBetween("前[中文ABC]后","[","]") 返回 中文ABC 参数: - 1. `text`(字):原始文本,即本次要查询、截取或修改的完整内容。 可选择字符变量,或填写带英文双引号的固定文本。 示例:"中文ABC123" - 2. `left`(字):左侧开始标记,不会包含在结果中。 可选择字符变量,或填写带英文双引号的固定文本。 示例:"[" - 3. `right`(字):右侧结束标记,不会包含在结果中。 可选择字符变量,或填写带英文双引号的固定文本。 示例:"]" 返回值(至少接收一个返回值): - 1. `text`(字):两标记之间的内容;任一标记为空或不存在时为空字符。 可选结果:字符内容=处理成功;""=原结果为空或参数范围无效 ### 截取标记后 `Data.textAfter(text: string, marker: string): string` 返回第一个 marker 之后的全部内容,不包含 marker。 示例:Data.textAfter("key=value","=") 返回 value 参数: - 1. `text`(字):原始文本,即本次要查询、截取或修改的完整内容。 可选择字符变量,或填写带英文双引号的固定文本。 示例:"中文ABC123" - 2. `marker`(字):作为截取边界的完整标记。 可选择字符变量,或填写带英文双引号的固定文本。 示例:"=" 返回值(至少接收一个返回值): - 1. `text`(字):第一个标记之后的内容;标记为空或不存在时为空字符。 可选结果:字符内容=处理成功;""=原结果为空或参数范围无效 ### 去除首尾空白 `Data.textTrim(text: string): string` 只移除首尾的空格、换行、制表符和全角空格,不改变中间内容。 示例:Data.textTrim(" 中文 ABC ") 返回 中文 ABC 参数: - 1. `text`(字):原始文本,即本次要查询、截取或修改的完整内容。 可选择字符变量,或填写带英文双引号的固定文本。 示例:"中文ABC123" 返回值(至少接收一个返回值): - 1. `text`(字):去除 Unicode 首尾空白后的字符串。 可选结果:字符内容=处理成功;""=原结果为空或参数范围无效 ### 替换首个内容 `Data.textReplaceFirst(text: string, target: string, replacement: string): string` 只把 target 第一次出现的位置替换为 replacement。 示例:Data.textReplaceFirst("A-A-A","A","X") 返回 X-A-A 参数: - 1. `text`(字):原始文本,即本次要查询、截取或修改的完整内容。 可选择字符变量,或填写带英文双引号的固定文本。 示例:"中文ABC123" - 2. `target`(字):要替换的完整内容。 可选择字符变量,或填写带英文双引号的固定文本。 示例:"A" - 3. `replacement`(字):替换后的内容;填写 "" 可删除首个匹配项。 可选择字符变量,或填写带英文双引号的固定文本。 示例:"X" 返回值(至少接收一个返回值): - 1. `text`(字):替换首个匹配项后的字符串;没有匹配时保持原文。 可选结果:字符内容=处理成功;""=原结果为空或参数范围无效 ### 替换全部内容 `Data.textReplace(text: string, target: string, replacement: string): string` 把 target 的所有非重叠匹配项替换为 replacement。 示例:Data.textReplace("A-A-A","A","X") 返回 X-X-X 参数: - 1. `text`(字):原始文本,即本次要查询、截取或修改的完整内容。 可选择字符变量,或填写带英文双引号的固定文本。 示例:"中文ABC123" - 2. `target`(字):要替换的完整内容。 可选择字符变量,或填写带英文双引号的固定文本。 示例:"A" - 3. `replacement`(字):替换后的内容;填写 "" 可删除全部匹配项。 可选择字符变量,或填写带英文双引号的固定文本。 示例:"X" 返回值(至少接收一个返回值): - 1. `text`(字):替换全部匹配项后的字符串;没有匹配时保持原文。 可选结果:字符内容=处理成功;""=原结果为空或参数范围无效 ### 插入字符串 `Data.textInsert(text: string, position: integer, content: string): string` 在 position 指向的字符前插入 content;字符总数加 1 表示追加。 示例:Data.textInsert("中文ABC",3,"-") 返回 中文-ABC 参数: - 1. `text`(字):原始文本,即本次要查询、截取或修改的完整内容。 可选择字符变量,或填写带英文双引号的固定文本。 示例:"中文ABC123" - 2. `position`(整):插入位置从 1 开始,有效范围是 1 到字符总数加 1。 例如长度为 5 时,填写 6 表示追加到末尾。 - 3. `content`(字):要插入的字符内容。 可选择字符变量,或填写带英文双引号的固定文本。 示例:"-" 返回值(至少接收一个返回值): - 1. `text`(字):插入后的字符串;位置无效时保持原文。 可选结果:字符内容=处理成功;""=原结果为空或参数范围无效 ### 删除范围字符 `Data.textRemove(text: string, start: integer, length: integer): string` 从 start 开始删除 length 个 Unicode 字符,索引从 1 开始。 示例:Data.textRemove("中文ABC",3,2) 返回 中文C 参数: - 1. `text`(字):原始文本,即本次要查询、截取或修改的完整内容。 可选择字符变量,或填写带英文双引号的固定文本。 示例:"中文ABC123" - 2. `start`(整):开始删除的字符位置,从 1 开始。 - 3. `length`(整):要删除的字符数量,不是结束位置。 返回值(至少接收一个返回值): - 1. `text`(字):删除后的字符串;位置无效时保持原文。 可选结果:字符内容=处理成功;""=原结果为空或参数范围无效 ### 重复字符串 `Data.textRepeat(text: string, count: integer): string` 把完整 text 连续重复 count 次,结果最大 16MB。 示例:Data.textRepeat("中A",3) 返回 中A中A中A 参数: - 1. `text`(字):原始文本,即本次要查询、截取或修改的完整内容。 可选择字符变量,或填写带英文双引号的固定文本。 示例:"中文ABC123" - 2. `count`(整):重复次数;可填写整数变量或数字。 返回值(至少接收一个返回值): - 1. `text`(字):重复后的字符串;次数小于等于 0 时为空字符。 可选结果:字符内容=处理成功;""=原结果为空或参数范围无效 ### 分割字符串 `Data.textSplit(text: string, separator: string): string` 按 separator 拆分 text,返回 JSON 数组字符串;连续分隔符产生的空项目也会保留。 示例:Data.textSplit("A||中","|") 返回 ["A","","中"] 参数: - 1. `text`(字):原始文本,即本次要查询、截取或修改的完整内容。 可选择字符变量,或填写带英文双引号的固定文本。 示例:"中文ABC123" - 2. `separator`(字):分隔符,可以是一个或多个普通字符。 可选择字符变量,或填写带英文双引号的固定文本。 示例:"|" 返回值(至少接收一个返回值): - 1. `items`(字):分割结果的 JSON 数组字符串。 可选结果:["A","中"]=分割成功;["原文"]=分隔符为空或原文没有分隔符 ### 拼接字符串 `Data.textJoin(json: string, separator: string): string` 用 separator 连接 JSON 数组中的全部项目;通常接收 textSplit 的结果。 示例:Data.textJoin("[\"A\",\"中\",\"3\"]","-") 返回 A-中-3 参数: - 1. `json`(字):JSON 数组字符串或保存该数组的字符变量。 示例:"[\"A\",\"中\",\"3\"]" - 2. `separator`(字):每个数组项目之间使用的连接内容。 可选择字符变量,或填写带英文双引号的固定文本。 示例:"-" 返回值(至少接收一个返回值): - 1. `text`(字):拼接结果;json 不是有效 JSON 数组时为空字符。 可选结果:字符内容=处理成功;""=原结果为空或参数范围无效 ### 正则判断 `Data.regexMatch(text: string, expression: string): integer` 判断 Java Unicode 正则能否在 text 任意位置找到内容;找到返回 1,未找到返回 0。 示例:Data.regexMatch("订单A-123","^订单[A-Z]-\\d+$") 返回 1 参数: - 1. `text`(字):原始文本,即本次要查询、截取或修改的完整内容。 可选择字符变量,或填写带英文双引号的固定文本。 示例:"中文ABC123" - 2. `expression`(字):Java 正则表达式;完整匹配请使用 ^ 和 $。 可点击“快捷选择”使用数字、字母等常用表达式。 固定表达式必须放在英文双引号内,反斜杠需要写两次。 示例:"^订单[A-Z]-\\d+$";格式错误会停止并提示原因。 返回值(至少接收一个返回值): - 1. `matched`(整):正则表达式是否找到匹配内容。 可选结果:1=条件成立;0=条件不成立 ### 正则提取首个 `Data.regexExtract(text: string, expression: string, group: integer): string` 提取 text 中第一个正则匹配内容;没有匹配时返回空字符。 示例:Data.regexExtract("订单A-123","\\d+") 返回 123 分组示例:Data.regexExtract("A-123","([A-Z])-(\\d+)",2) 返回 123 参数: - 1. `text`(字):原始文本,即本次要查询、截取或修改的完整内容。 可选择字符变量,或填写带英文双引号的固定文本。 示例:"中文ABC123" - 2. `expression`(字):Java 正则表达式;完整匹配请使用 ^ 和 $。 可点击“快捷选择”使用数字、字母等常用表达式。 固定表达式必须放在英文双引号内,反斜杠需要写两次。 示例:"^订单[A-Z]-\\d+$";格式错误会停止并提示原因。 - 3. `group`(整):提取分组编号;0 表示完整匹配,1 表示第一个括号分组,以此类推。 分组不存在时会停止脚本并提示有效范围。;可省略,默认 0 返回值(至少接收一个返回值): - 1. `match`(字):第一个完整匹配或指定分组的内容。 可选结果:字符内容=找到匹配内容;""=没有匹配,或可选分组没有参与本次匹配 ### 正则提取全部 `Data.regexExtractAll(text: string, expression: string, group: integer): string` 提取 text 中全部正则匹配内容并返回 JSON 数组,最多 10000 项且不超过 16MB。 示例:Data.regexExtractAll("A12 B34","\\d+") 返回 ["12","34"] 参数: - 1. `text`(字):原始文本,即本次要查询、截取或修改的完整内容。 可选择字符变量,或填写带英文双引号的固定文本。 示例:"中文ABC123" - 2. `expression`(字):Java 正则表达式;完整匹配请使用 ^ 和 $。 可点击“快捷选择”使用数字、字母等常用表达式。 固定表达式必须放在英文双引号内,反斜杠需要写两次。 示例:"^订单[A-Z]-\\d+$";格式错误会停止并提示原因。 - 3. `group`(整):提取分组编号;0 表示完整匹配,1 表示第一个括号分组,以此类推。 分组不存在时会停止脚本并提示有效范围。;可省略,默认 0 返回值(至少接收一个返回值): - 1. `matches`(字):全部完整匹配或指定分组组成的 JSON 数组。 可选结果:["内容",...]=找到一个或多个匹配内容;[]=没有匹配内容 ## 数学函数 / 数值处理 ### 四舍五入 `Math.round(value: number): integer` 把浮点数四舍五入为整数。 参数: - 1. `value`(浮):要处理的数字,例如 3.6。 返回值(至少接收一个返回值): - 1. `number`(整):四舍五入后的整数。 可选结果:整数结果=转换成功;-1=参数无效 ### 限制范围 `Math.clamp(value: number, min: number, max: number): number` 把数字限制在指定的最小值和最大值之间。 参数: - 1. `value`(浮):要限制的数字。 - 2. `min`(浮):允许的最小值。 - 3. `max`(浮):允许的最大值。 返回值(至少接收一个返回值): - 1. `number`(浮):限制后的数字。 可选结果:最小值=原数字小于最小值;最大值=原数字大于最大值;原数字=原数字在范围内;-1=范围参数无效 ### 范围判断 `Math.inRange(value: number, min: number, max: number): integer` 判断数字是否位于指定范围内。 参数: - 1. `value`(浮):要判断的数字。 - 2. `min`(浮):范围最小值。 - 3. `max`(浮):范围最大值。 返回值(至少接收一个返回值): - 1. `inRange`(整):数字是否在范围内。 可选结果:1=在范围内;0=不在范围内;-1=范围参数无效 ## 数学函数 / 随机函数 ### 随机整数 `Math.randInt(min: integer, max: integer): integer` 生成最小值到最大值之间的随机整数。 参数: - 1. `min`(整):允许的最小值,例如 1。 - 2. `max`(整):允许的最大值,例如 100。 返回值(至少接收一个返回值): - 1. `number`(整):范围内的随机整数。 可选结果:随机整数=生成成功;-1=范围参数无效 ### 随机字符串 `Math.randStr(length: integer, mode: integer): string` 按字符模式生成指定长度的随机字符串。 参数: - 1. `length`(整):生成长度,范围为 1 至 1024。 - 2. `mode`(整):字符组成:1 小写,2 大写,3 大小写,4 大小写与数字,5 小写与数字。 返回值(至少接收一个返回值): - 1. `text`(字):生成的随机字符串。 可选结果:aB7k2Z=生成结果示例;""=长度或模式无效 ## 数学函数 / 坐标计算 ### 基准范围转屏幕范围 `Coordinate.toScreenRect(x: integer, y: integer, width: integer, height: integer): (integer, integer, integer, integer)` 把基准 X、Y、宽、高一次转换为真实屏幕范围,按此顺序返回四个整数。 参数: - 1. `x`(整):图像识别结果的 X 坐标,例如 图像变量.x。 - 2. `y`(整):图像识别结果的 Y 坐标,例如 图像变量.y。 - 3. `width`(整):图像识别结果的宽,例如 图像变量.width。 - 4. `height`(整):图像识别结果的高,例如 图像变量.height。 返回值(至少接收一个返回值): - 1. `屏幕X`(整):真实屏幕 X 坐标 可选结果:屏幕X=转换成功;-1=坐标映射未就绪或参数无效 - 2. `屏幕Y`(整):真实屏幕 Y 坐标 可选结果:屏幕Y=转换成功;-1=坐标映射未就绪或参数无效 - 3. `屏幕宽`(整):真实屏幕宽 可选结果:屏幕宽=转换成功;-1=坐标映射未就绪或参数无效 - 4. `屏幕高`(整):真实屏幕高 可选结果:屏幕高=转换成功;-1=坐标映射未就绪或参数无效 ### 两点距离 `Math.distance(x1: integer, y1: integer, x2: integer, y2: integer): integer` 计算两点间的直线像素距离,可用于判断角色是否到达目标。 参数: - 1. `x1`(整):当前位置 X 坐标。 - 2. `y1`(整):当前位置 Y 坐标。 - 3. `x2`(整):目标位置 X 坐标。 - 4. `y2`(整):目标位置 Y 坐标。 返回值(至少接收一个返回值): - 1. `distance`(整):两点间的像素距离。 可选结果:5=示例:(0,0) 到 (3,4);-1=参数无效 ### 两点角度 `Math.angle(x1: integer, y1: integer, x2: integer, y2: integer): integer` 计算第一点指向第二点的方向角度,可传给轮盘坐标函数。 参数: - 1. `x1`(整):当前位置 X 坐标。 - 2. `y1`(整):当前位置 Y 坐标。 - 3. `x2`(整):目标位置 X 坐标。 - 4. `y2`(整):目标位置 Y 坐标。 返回值(至少接收一个返回值): - 1. `angle`(整):方向角度,范围为 -180 至 180。 可选结果:0=向右;90=向下;180=向左;-90=向上;-1=参数无效 ### 翻转角度 `Math.flipAngle(angle: integer, mode: integer): integer` 按上下或左右方向翻转角度。 参数: - 1. `angle`(整):两点角度返回值,或需要修正的方向角度。 - 2. `mode`(整):翻转方式:1 上下翻转,2 左右翻转。 返回值(至少接收一个返回值): - 1. `angle`(整):翻转后的方向角度。 可选结果:翻转角度=模式有效;-1=角度或模式无效 ### 轮盘X坐标 `Math.joystickX(centerX: integer, angle: integer, radius: integer): integer` 根据轮盘中心、方向角度和半径计算拖拽终点 X 坐标。 参数: - 1. `centerX`(整):轮盘中心 X 坐标。 - 2. `angle`(整):两点角度或翻转角度的返回值。 - 3. `radius`(整):轮盘拖动半径,例如 80。 返回值(至少接收一个返回值): - 1. `x`(整):轮盘拖拽终点 X 坐标。 可选结果:X坐标=计算成功;-1=参数无效 ### 轮盘Y坐标 `Math.joystickY(centerY: integer, angle: integer, radius: integer): integer` 根据轮盘中心、方向角度和半径计算拖拽终点 Y 坐标。 参数: - 1. `centerY`(整):轮盘中心 Y 坐标。 - 2. `angle`(整):两点角度或翻转角度的返回值。 - 3. `radius`(整):轮盘拖动半径,例如 80。 返回值(至少接收一个返回值): - 1. `y`(整):轮盘拖拽终点 Y 坐标。 可选结果:Y坐标=计算成功;-1=参数无效 ## 其他语言 / Lua调用 ### 执行Lua片段 `OtherLanguage.lua(code: string)` 在当前局部环境中执行 Lua 代码,共享调用位置可用的变量、函数和已加载内容;执行失败会报告 Lua 错误。 参数: - 1. `code`(字):Lua 代码字符串或字符变量。示例:print("开始执行");多行或长代码建议改用“执行Lua文件”。 返回值:无。 ### 执行Lua文件 `OtherLanguage.load(path: string, pathMode: integer, environmentMode: integer)` 读取并执行 Lua 文件。项目目录模式从当前项目的 Lua 目录读取;绝对路径模式直接读取设备文件。 参数: - 1. `path`(字):Lua 文件路径。项目目录示例:工具.lua;绝对路径示例:/sdcard/脚本.lua - 2. `pathMode`(整):路径类型:0 当前项目的 Lua 目录,1 设备绝对路径。 - 3. `environmentMode`(整):加载环境:0 使用调用位置的当前局部环境,1 使用当前 Lua 状态的全局环境。 返回值:无。