|
|
脚本在自家手机上跑得好好的,换一台机器就满屏找不到图——这是找图找色新手最高频的坑。根因基本就两类:匹配阈值太死,或者坐标写死了某一台机器的分辨率。
阈值不是越高越好
`findColor` 这类接口一般要传一个相似度阈值。很多人图省事写 0.95,结果目标颜色稍微受光照、抗锯齿影响就匹配不上。实战里 0.85~0.90 是更稳的区间:既能容错,又不会乱匹配到背景。
- var p = findColor("#ff5500", 0.88, 0, 0, sw, sh);
- if (p) { clickPercent(p.x / sw, p.y / sh); }
复制代码
注意这里用 `clickPercent` 而不是 `click(p.x, p.y)`——把绝对坐标换成百分比,天然适配不同分辨率。
死坐标是大忌
把"点击 (540, 960)"写死,等于只认这一台 1080p 手机。换成百分比坐标后,720p、2K 屏都能点到同一个按钮。AIWROK 的 `clickPercent(x, y)` 和 `rectInPercent(...)` 就是为此设计的。
多点校验更稳
只找一个颜色容易误判。更稳的做法是找一个"特征组合":比如同时校验图标颜色和它右侧文字区域,或者连续找 3 个锚点都在预期位置才认定匹配成功。误匹配率能降一个数量级。
找不到要优雅降级
匹配失败别让脚本卡死重试。设定最大重试次数,超过就走备选路径(比如改用 `auto.getXml()` 找控件文字),再不行就 `toast.show` 提示并暂停,留给人处理。
- var tries = 0;
- while (tries < 3) {
- var p = findColor(target, 0.88, 0, 0, sw, sh);
- if (p) { clickPercent(p.x / sw, p.y / sh); break; }
- tries++; sleep.millisecond(500);
- }
复制代码
截图区域越小越快
`findColor` 的搜索范围是全屏就慢。把范围缩到"只可能在的那个区域",速度能快好几倍,也更不容易误匹配到别处的同色块。
相关阅读
- 短信验证码中心AIWROK万能调用端
- clickPercent天然适配不同分辨率找控件点击
- floatUI深色控制台风格悬浮窗日志
|
|