扩展:区域多点找色基础和高阶用法
基础用法
当我们使用“区域模糊找色”函数时,常常会因为屏幕上有大量符合指定颜色的点而找不到需要的坐标。该函数通过在寻找到一个符合指定颜色 color 的坐标后,进一步确认其周边点坐标的方式,来确定准确目标。例如,现在我们在图像上找到了我们需要的一个按钮,这个按钮的图案是不变的,但是它的整体位置却会在整个屏幕上变化,现在我们想要在脚本运行时得到其坐标。
我们首先找到基准点:
这个点的颜色为 0x181F85
,坐标为 268, 802
。
记录下来,接着找这个按钮上的参照点:
这个点的颜色为 0x00BBFE
,坐标为 297, 803
,相对于基准点的坐标为 29, 1
。 记录下来,接着找这个按钮上的第三个点和第四个点。
第二个参照点的颜色为 0x0B6BBE
,坐标为 371, 798
,相对于基准点的坐标为 103, -4
。
第三个参照点的颜色为 0x150972
,坐标为 333, 811
,相对于基准点的坐标为 65, 9
。
现在我们找到了需要的目标点:
序号 | 颜色 | 坐标 | 相对坐标 |
---|---|---|---|
1 | 0x181F85 | (268, 802) | (0, 0) |
2 | 0x00BBFE | (297, 803) | (29, 1) |
3 | 0x0B6BBE | (371, 798) | (103, -4) |
4 | 0x150972 | (333, 811) | (65, 9) |
现在我们可以把它写成多点找色的格式了:
--多点找色
--在屏幕上以左上角坐标 (0,0) 和右下角坐标 (639, 959)确定的区域(即全屏)范围内寻找符合偏移范围和颜色的 3 个坐标点
x, y = findMultiColorInRegionFuzzy(0x181F85, "29|1|0x00BBFE,103|-4| 0x0B6BBE,65|9|0x150972", 100, 0, 0, 639, 959);
nLog(x..","..y, 0)
那么返回的 x, y
就应该是基准点坐标 268,802
了。即使这个按钮平移了,这个点的坐标变了,也可以寻找到其准确位置。
高阶用法
多方向找色规则
orient 不填或 orient = 0 表示包括基准点在内的所有目标点都必须在查找范围之内 ,orient = 1 - 8 表示使用 8 种不同的找色方向。
只要写了 orient 参数,那么找色方向就会根据 init 设置方向旋转,一直保持以当前设置的屏幕方向左上角为初始点。
orient = 1,左上角到右下角,纵向开始找色,先找到 a 顶点。
orient = 2,左上角到右下角,横向开始找色,先找到 b 顶点。
orient = 3,右上角到左下角,横向开始找色,先找到 c 顶点。
以此类推。
注意事项
- 如果 orient = 1 - 8 按方向进行查找,只要基准点在查找范围内,不需要参照点在查找范围之内。