函数:findMultiColorInRegionFuzzy 区域多点找色

函数名称:多点找色,区域多点找色

函数功能:在指定区域,根据颜色以及其周边点的颜色,寻找符合条件的点的坐标,支持模糊查找。

函数方法

x, y = findMultiColorInRegionFuzzy(color,posandcolor,degree,x1,y1,x2,y2,table)

参数 类型 字段 说明
color number 必填 欲寻找的参照点颜色
posandcolor string 必填 周边点颜色参数
degree number 必填 寻找精度,范围:1 ~ 100,当是 100 时为完全匹配
x1 number 必填 找色区域左上角顶点屏幕横坐标
y1 number 必填 找色区域左上角顶点屏幕纵坐标
x2 number 必填 找色区域右下角顶点屏幕横坐标
y2 number 必填 找色区域右下角顶点屏幕纵坐标
table table 选填 高阶用法

高阶用法

参数 类型 字段 说明
orient number 选填 0 - 8 代表找色方向,支持版本详见注意事项
main number 选填 参照点的偏色,支持引擎版本 iOS v2.4.1,
Andriod v2.3.5.4 以上版本,
例如 main = 0x101010(十六进制)
list number 选填 周边点的偏色,支持引擎版本 iOS v2.4.1,
Andriod v2.3.5.4 以上版本,
例如 list = 0x202020(十六进制)
max_miss number 选填 最大不匹配数,默认 0,代表所有参考点都匹配;
1 代表其中 1 个点不匹配,仅支持引擎版本 iOS v3.0.7、
Android v3.1.3 及其以上版本
返回值 类型 说明
x, y number 返回符合条件的参照点的坐标,如未找到则返回 -1,-1

基础用法:

当我们使用“区域模糊找色”函数时,常常会因为屏幕上有大量符合指定颜色的点而找不到需要的坐标。该函数通过在寻找到一个符合指定颜色 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); 
dialog(x..","..y, 0)

那么返回的(x, y)就应该是(268,802)了。即使这个按钮平移了,这个点的坐标变了,也可以寻找到其准确位置。

高阶用法:

多方向找色规则:

orient 不填或 orient = 0 表示包括基准点在内的所有参照点都必须在查找范围之内 ,orient = 1 - 8 表示使用 8 种不同的找色方向。

只要写了 orient 参数,那么找色方向就会根据 init 设置方向旋转,一直保持以当前设置的屏幕方向左上角为初始点。

init.png-90.8kB

orient = 1,左上角到右下角,纵向开始找色,先找到 a 顶点。

orient = 2,左上角到右下角,横向开始找色,先找到 b 顶点。

orient = 3,右上角到左下角,横向开始找色,先找到 c 顶点。

以此类推。

完整演示代码、image、多点找色示例图:https://pan.baidu.com/s/1sfWwXlPkdpxBy79C6fcCDA 密码:38r3

多方向找色方法:

--table 参数需要引擎版本:iOS 3.0.0-118,Android 2.3.5 以上支持
--max_miss 参数仅支持专业版 iOS v3.0.7 及其以上版本
x,y = findMultiColorInRegionFuzzy( 0x000000, "0|0|0x000000", 95, x1, y1, x2, y2,  { orient = 1,["max_miss"] = 3 } )

偏色用法:

--另外一种偏色模式,引擎版本 iOS v2.4.1,Andriod v2.3.5.4 以上支持
--main 为参照点 0xffffff 的偏色,list 为周边点的偏色,如果想对每一个周边点单独偏色,在每一个偏色后面加上偏色值即可,如 "0|0|0x1ac819|0x202020"
x, y = findMultiColorInRegionFuzzy(0xffffff,"0|0|0x1ac819,-4|-208|0x18cb76,3|58|0x21cc79",90,x y x0,y0, { main = 0x101010, list = 0x202020 })
dialog(x..","..y,0)

注意事项:

  • 引擎版本 iOS v2.4.5-9,v3.0.0-118 以上版本,如果 orient = 1 - 8 按方向进行查找,只要目标点在查找范围内,不需要基准点须在查找范围之内。
  • 引擎版本 Android v2.3.5 以上版本,如果 orient = 1 - 8 按方向进行查找, Android v2.3.5.4 以上版本支持 orient = 0。
  • posandcolor 参数中的坐标为相对坐标。
  • 多点找色的代码可直接用触动精灵取色工具生成,其使用方法参见图文教程。
  • 颜色值的十六进制文本中,其顺序为 RGB。
  • 相对于第一个点的坐标,即用这个点的横坐标、纵坐标分别减去第一个点的横坐标、纵坐标,可以为负数。
  • 使用此函数时精度参数设置过低,会导致性能大幅下降。
Copyright 北京帮你玩科技有限公司 2020 all right reserved,powered by Gitbook该文章修订时间: 2020-03-12 10:09:07

results matching ""

    No results matching ""