颜色操作是实现界面识别、控件定位、状态判断、UI 渲染等核心功能的关键技术。无论是游x自动化、APP 功能模拟、界面状态检测,还是自定义 UI 样式,都离不开颜色解析、合成、提取、对比等基础能力。本文系统讲解颜色 API 用法、原理、场景,助力开发者快速掌握颜色操作技巧。
一、颜色操作在冰狐脚本中的核心价值
冰狐智能辅助以 JavaScript 为脚本语言,提供独立的Color 工具类,专门处理颜色相关逻辑,适配移动端自动化的高频需求:
- 控件定位:无控件 ID、无障碍失效时,通过特征色定位按钮、图标、进度条等元素;
- 状态判断:根据颜色变化识别按钮是否可点击、血量是否充足、任务是否完成;
- UI 自定义:动态设置文本、悬浮窗、布局的颜色与透明度;
- 精度匹配:通过颜色相似度计算,实现模糊找色、容错匹配;
- 数据转换:在十六进制字符串、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);
三、颜色操作核心原理与注意事项
- 颜色格式统一 冰狐内部以整型存储颜色,字符串仅为便捷入参,所有 API 最终转为整型处理;#RRGGBB 等价于 #FFRRGGBB。
- 通道取值规范 ARGB 四通道均为0-255,超出会导致解析异常、UI 显示异常;透明通道直接影响悬浮窗、控件覆盖效果。
- 相似度阈值经验 自动化找色常用阈值:0-10 为高度相似,10-30 为模糊匹配,>30判定不匹配;可根据屏幕色差、抗锯齿灵活调整。
- 与图色 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 设置半透明悬浮日志、操作面板。
六、常见问题与避坑指南
- 解析返回 0 或异常检查字符串是否以 #开头、是否为 6/8 位十六进制,无非法字符。
- 找色失败确认开启 enableScreenShot=true;缩小查找区域、降低相似度阈值。
- 透明不生效使用 #AARRGGBB 格式,确保 A 通道值正确;部分接口不支持透明,改用纯色。
- 颜色偏差大避免夜间模式、滤镜、截图压缩导致色差,用取色工具获取标准色。
七、总结
颜色操作是冰狐智能辅助自动化脚本的基础核心能力 ,掌握 Color 类 API,可实现从简单 UI 染色到复杂图色自动化的全场景需求。其优势在于:标准统一、兼容性强、性能高效、上手简单,配合找色、点击、滑动等接口,能开发出稳定、抗风控的高阶脚本。