|
马上加入TC
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
大漠自带范围多点找色是在范围内确定各点的,速度上偏慢。我现在这个代码是小范围确定主色后,在通过固定点范围找色的。
然而有时候不好用,麻烦大神帮忙优化一下。如果有直接源码就好了,谢谢
- //调用例子
- var common = "fdefa2,1|1|fdeda0,2|1|fded9f,2|3|fdea9d,1|4|fde99d,4|4|fde79a"
- var common_xy = array(765, 554)/
- if(FindMultiColorS(common_xy[0]-10, common_xy[1]-10,common_xy[0]+10, common_xy[1]+10 0.8, common,5))
- traceprint("找到")
- end
- //函数源码
- function FindMultiColorS(x1, y1, x2, y2, sim, color, dir)//范围多点找色
- var xy = array()
- //将颜色组分割成大漠的格式
- var first_color = strformat("%s%s", strsub(color, 0, 6), "-000000")
- var offset_color = strsub(color, 7, strlen(color))
- var x = x1
- var y = y1
- //寻找颜色是从左到右,从上到下的
- while(y < y2)
- //确定主色
- if(dm.FindColor(x, y, x2, y2, first_color, sim, dir, xy[0], xy[1]) == 1)
- //调用多点找色
- if(findColorCmpMulti(xy[0], xy[1], sim, color))
- return true
- else
- x = xy[0]
- y = xy[1]
- while(x < x2)
- if(dm.FindColor(x, y, x2, y2, first_color, sim, dir, xy[0], xy[1]) == 1)
- if(findColorCmpMulti(xy[0], xy[1], sim, color))
- return true
- elseif(x2 <= xy[0] + 1)
- break
- else
- x = xy[0] + 1
- end
- // traceprint(x)
- // traceprint(y)
- // traceprint(x2)
- // traceprint(y2)
- else
- break
- end
- end
- y = y + 1
- if(y >= y2)
- return false
- end
- end
- else
- return false
- end
- end
- end
复制代码
|
|