使用颜色来实现自动化脚本

颜色操作是实现界面识别、控件定位、状态判断、UI 渲染等核心功能的关键技术。无论是游x自动化、APP 功能模拟、界面状态检测,还是自定义 UI 样式,都离不开颜色解析、合成、提取、对比等基础能力。本文系统讲解颜色 API 用法、原理、场景,助力开发者快速掌握颜色操作技巧。

一、颜色操作在冰狐脚本中的核心价值

冰狐智能辅助以 JavaScript 为脚本语言,提供独立的Color 工具类,专门处理颜色相关逻辑,适配移动端自动化的高频需求:

  1. 控件定位:无控件 ID、无障碍失效时,通过特征色定位按钮、图标、进度条等元素;
  2. 状态判断:根据颜色变化识别按钮是否可点击、血量是否充足、任务是否完成;
  3. UI 自定义:动态设置文本、悬浮窗、布局的颜色与透明度;
  4. 精度匹配:通过颜色相似度计算,实现模糊找色、容错匹配;
  5. 数据转换:在十六进制字符串、ARGB 分量、整型值之间自由转换,适配不同 API 参数格式。

颜色操作是图色自动化的基础,相比控件遍历、OCR,具有性能高、兼容性强、抗风控等优势,是高阶脚本必备技能。

二、冰狐 Color 类核心 API 详解

冰狐 Color 类提供解析、合成、提取、相似度计算四大能力,所有 API 返回标准整型颜色值,兼容平台所有图色、UI 接口。

1. 颜色解析:Color.parse (colorString)

  • 功能:将 #AARRGGBB 或 #RRGGBB 格式字符串转为整型颜色值;
  • 参数:colorString(必填,字符串);
  • 格式规则
    • #RRGGBB:无透明通道,默认 Alpha=255(不透明);
    • #AARRGGBB:含透明通道,A=0 全透明,A=FF 不透明;
  • 返回:整型颜色值(用于后续提取、对比、UI 设置);
  • 示例
javascript 复制代码
// 解析无透明颜色
const color1 = Color.parse('#223344');
console.log('解析无透明颜色:', color1);

// 解析含透明颜色
const color2 = Color.parse('#DD223344');
console.log('解析含透明颜色:', color2);

2. 颜色合成:Color.rgb/r/g/b

(1)Color.rgb(r, g, b)
  • 功能:用红、绿、蓝三通道合成整型颜色,Alpha 默认 255;
  • 参数:r/g/b(必填,0-255 整数);
  • 示例
javascript 复制代码
const rgbColor = Color.rgb(22, 165, 99);
console.log('RGB合成颜色:', rgbColor);
(2)Color.argb(a, r, g, b)
  • 功能:含透明通道的颜色合成;
  • 参数:a/r/g/b(必填,0-255 整数);
  • 示例
javascript 复制代码
const argbColor = Color.argb(200, 22, 165, 99);
console.log('ARGB合成颜色:', argbColor);

3. 通道提取:alpha/red/green/blue

  • 功能:从整型颜色值中提取对应通道值;
  • 参数:color(必填,整型颜色值);
  • 示例
javascript 复制代码
const sourceColor = Color.parse('#DD223344');
const alpha = Color.alpha(sourceColor);
const red = Color.red(sourceColor);
const green = Color.green(sourceColor);
const blue = Color.blue(sourceColor);

console.log('透明通道:', alpha);
console.log('红色通道:', red);
console.log('绿色通道:', green);
console.log('蓝色通道:', blue);

4. 颜色相似度:Color.similarity (color1, color2)

  • 功能:计算两颜色距离,返回浮点值;
  • 参数:color1/color2(整型或字符串格式均可);
  • 规则:值越小,颜色越接近;常用于模糊找色、状态判断;
  • 示例
javascript 复制代码
const sim1 = Color.similarity(-1, '#DD223344');
const sim2 = Color.similarity('#223344', '#334455');
console.log('颜色相似度1:', sim1);
console.log('颜色相似度2:', sim2);

三、颜色操作核心原理与注意事项

  1. 颜色格式统一 冰狐内部以整型存储颜色,字符串仅为便捷入参,所有 API 最终转为整型处理;#RRGGBB 等价于 #FFRRGGBB。
  2. 通道取值规范 ARGB 四通道均为0-255,超出会导致解析异常、UI 显示异常;透明通道直接影响悬浮窗、控件覆盖效果。
  3. 相似度阈值经验 自动化找色常用阈值:0-10 为高度相似,10-30 为模糊匹配,>30判定不匹配;可根据屏幕色差、抗锯齿灵活调整。
  4. 与图色 API 联动颜色 API 是 findColor、getPixelColor、compareColors 等接口的基础,先通过 Color 处理目标色,再执行找色,提升稳定性。

四、实战场景:完整 Demo 源码

以下 Demo 覆盖解析、合成、提取、相似度、找色、UI 设置全流程,适配冰狐编辑器,复制即可运行。

javascript 复制代码
// ========== 冰狐智能辅助 颜色操作完整Demo ==========
// 开启截图权限(找色必备)
config.enableScreenShot = true;

function main() {
    console.log("===== 冰狐颜色操作Demo开始 =====");

    // 1. 颜色解析
    const colorStr1 = "#FF5722"; // 橙色
    const colorStr2 = "#80FF5722"; // 半透明橙色
    const intColor1 = Color.parse(colorStr1);
    const intColor2 = Color.parse(colorStr2);
    console.log("解析颜色1:", colorStr1, "→", intColor1);
    console.log("解析颜色2:", colorStr2, "→", intColor2);

    // 2. 颜色合成
    const rgbColor = Color.rgb(255, 87, 34);
    const argbColor = Color.argb(128, 255, 87, 34);
    console.log("RGB合成:", rgbColor);
    console.log("ARGB合成:", argbColor);

    // 3. 通道提取
    const alpha = Color.alpha(intColor2);
    const red = Color.red(intColor2);
    const green = Color.green(intColor2);
    const blue = Color.blue(intColor2);
    console.log("透明通道:", alpha);
    console.log("RGB分量:", red, green, blue);

    // 4. 颜色相似度计算
    const sim = Color.similarity(colorStr1, colorStr2);
    console.log("颜色相似度:", sim);

    // 5. 动态设置UI颜色
    setupUI(); // 初始化UI
    ui("demoText").setColor(colorStr1);
    ui("demoLayout").setBackgroundColor(colorStr2);

    // 6. 屏幕找色实战(区域找橙色按钮)
    findColorDemo();

    console.log("===== Demo执行完毕 =====");
}

// 找色实战:在屏幕中心区域查找目标色并点击
function findColorDemo() {
    const targetColor = "#FF5722"; // 目标按钮颜色
    const screenWidth = window.width;
    const screenHeight = window.height;
    // 查找区域:屏幕中心30%范围
    const left = screenWidth * 0.35;
    const top = screenHeight * 0.35;
    const right = screenWidth * 0.65;
    const bottom = screenHeight * 0.65;
    const simThreshold = 20; // 相似度阈值

    const point = findColor(targetColor, left, top, right, bottom, simThreshold);
    if (point) {
        console.log("找到颜色,坐标:", point.x, point.y);
        click(point.x, point.y); // 点击目标
    } else {
        console.log("未找到目标颜色");
    }
}

// UI布局定义
function setupUI() {
    <template>
        <linear id="demoLayout" width="match_parent" height="100" backgroundColor="#FFFFFF">
            <text id="demoText" text="冰狐颜色操作Demo" textSize="20" color="#000000" />
        </linear>
    </template>
}

五、Demo 功能说明与扩展方向

1. 核心功能

  • 基础 API 演示:解析、合成、提取、相似度全覆盖;
  • UI 动态染色:修改文本与布局颜色;
  • 区域找色 + 点击:自动化定位并操作颜色控件;
  • 日志输出:直观查看颜色转换结果与找色状态。

2. 扩展场景

  • 状态检测:每隔 1 秒读取指定坐标颜色,判断按钮是否亮起;
  • 进度条识别:提取进度条颜色宽度,计算任务进度;
  • 抗锯齿找色:用 similarity 做模糊匹配,适配不同分辨率;
  • 悬浮窗美化:用 ARGB 设置半透明悬浮日志、操作面板。

六、常见问题与避坑指南

  1. 解析返回 0 或异常检查字符串是否以 #开头、是否为 6/8 位十六进制,无非法字符。
  2. 找色失败确认开启 enableScreenShot=true;缩小查找区域、降低相似度阈值。
  3. 透明不生效使用 #AARRGGBB 格式,确保 A 通道值正确;部分接口不支持透明,改用纯色。
  4. 颜色偏差大避免夜间模式、滤镜、截图压缩导致色差,用取色工具获取标准色。

七、总结

颜色操作是冰狐智能辅助自动化脚本的基础核心能力 ,掌握 Color 类 API,可实现从简单 UI 染色到复杂图色自动化的全场景需求。其优势在于:标准统一、兼容性强、性能高效、上手简单,配合找色、点击、滑动等接口,能开发出稳定、抗风控的高阶脚本。

相关推荐
ai_coder_ai1 天前
在自动化脚本中如何实现文本转语音?
tts·autojs·自动化脚本·冰狐智能辅助·easyclick
ai_coder_ai2 天前
在自动化脚本中如何使用websocket?
websocket·autojs·自动化脚本·冰狐智能辅助·easyclick
ai_coder_ai3 天前
在自动化脚本中如何实现录音功能?
autojs·录音·自动化脚本·冰狐智能辅助·easyclick
Mr -老鬼4 天前
EasyClick 安卓CLI全栈专家能力手册
android·自动化·ai编程·easyclick·易点云测
ai_coder_ai5 天前
在自动化脚本中如何获取手机信息和控制手机?
autojs·自动化脚本·冰狐智能辅助·easyclick
Mr -老鬼6 天前
EasyClick 全平台公开问题解决方案全集(2026最新完整版)
自动化·ec·easyclick·易点云测
ai_coder_ai7 天前
在自动化脚本中如何实现网络访问?
网络·autojs·自动化脚本·冰狐智能辅助·easyclick
ai_coder_ai9 天前
如何优雅的使用悬浮日志调试自动化脚本?
autojs·自动化脚本·冰狐智能辅助·easyclick
ai_coder_ai10 天前
自动化脚本ui编程之flexbox布局
ui·autojs·自动化脚本·冰狐智能辅助·easyclick