函数:findMultiColor 多点区域找色
函数功能:在指定区域,根据颜色以及其周边点的颜色,寻找所有符合条件的点的坐标,支持模糊查找
TSLib 版本:仅支持 v1.3.1 及其以上版本
函数方法
point = findMultiColor(color,posandcolors,degree,x1,y1,x2,y2,tb)
参数 | 类型 | 必填 | 说明 |
---|---|---|---|
color | number | 是 | 基准点颜色 |
posandcolors | string | 是 | 周边参照点颜色参数 |
degree | number | 是 | 寻找精度,范围:1 ~ 100,当是 100 时为完全匹配 |
x1 | number | 是 | 找色区域左上角顶点屏幕横坐标 |
y1 | number | 是 | 找色区域左上角顶点屏幕纵坐标 |
x2 | number | 是 | 找色区域右下角顶点屏幕横坐标 |
y2 | number | 是 | 找色区域右下角顶点屏幕纵坐标 |
tb | table | 否 | 高阶用法,详细用法详见 findMultiColorInRegionFuzzy 函数 |
高阶用法
参数 | 类型 | 必填 | 说明 |
---|---|---|---|
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(十六进制) |
count | number | 否 | 设置查找结果数量,默认返回所有符合条件的参照点的坐标 仅支持引擎版本 iOS v3.0.7,Android v3.1.3 及其以上版本 |
miss | number | 否 | 单位:像素,过滤返回值中在此参数范围内的坐标, 一般用于寻找多个相同图标的坐标, 具体介绍详见下方注意事项 |
返回值 | 类型 | 说明 |
---|---|---|
point | table | 以 table 形式返回所有符合条件点的坐标(第一个点为基准点,其余点为参照点),如未找到则返回的 table 为空 |
返回的 table 为以下形式
table = {
{x = 100,y = 110},
{x = 200,y = 210},
{x = 300,y = 310},
...
}
扩展阅读:区域多点找色的基础和高阶用法
函数用例
require "TSLib"
--参数 miss 仅支持 TSLib v1.3.1 以及以上版本
point = findMultiColor(0x969696,"6|1|0x969696,1|12|0x969696,-4|0|0x969696",90,683,236,732,663,{miss = 10})
if point then
if #point ~= 0 then --如返回的table不为空(至少找到一个符合条件的点)
for var = 1,#point do
nLog(point[var].x..":"..point[var].y)
end
end
end
注意事项
posandcolor 参数中的坐标为相对坐标。
相对于基准点的坐标,即用参照点的横坐标、纵坐标分别减去基准点的横坐标、纵坐标,可以为负数。
多点找色的代码可直接用触动精灵取色工具生成,其使用方法参见图文教程。
颜色值的十六进制文本中,其顺序为 RGB。
使用此函数时精度参数设置过低,会导致性能大幅下降。
miss 参数介绍
比如获取到坐标数量为 100 个,miss 为 10 时,会过滤掉数组中找到第一个坐标上下浮动 10 范围内的点,然后保存找到的第一个点坐标。
如过滤后数量为 80,会过滤掉 80 个坐标中以其中第一个坐标上下浮动 10 范围内的点,保存第一个点坐标。
会一直按照此方法循环过滤剩余坐标中以第一个点坐标上下浮动 10 像素范围的点,直到过滤完所有点的坐标,然后保存每次循环过滤时的第一个坐标。
可以理解为从 100 个球里抽奖,每次抽取的球数量不等,只保留抽到的第一个球,一直循环抽取直到抽完所有球。
100 就是获取到的坐标数量,每次抽取的球数量即为每次过滤掉的以第一个坐标上下浮动的坐标数量,第一个球即为第一个坐标。
雷电 9 系统模拟器分辨率为平板版时使用函数:getScreenSize 获取的屏幕宽高相反,获取到的宽度实际为屏幕高度,获取的高度实际为屏幕宽度,其他模拟器获取的屏幕宽高为实际屏幕宽高。