TC官方合作论坛

 找回密码
 立即注册
查看: 1118|回复: 2

[问题] 求助大神帮忙优化范围多点找色

[复制链接]
发表于 2016-8-28 19:27:48 | 显示全部楼层 |阅读模式

马上加入TC

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
大漠自带范围多点找色是在范围内确定各点的,速度上偏慢。我现在这个代码是小范围确定主色后,在通过固定点范围找色的。
然而有时候不好用,麻烦大神帮忙优化一下。如果有直接源码就好了,谢谢

  1. //调用例子
  2. var common = "fdefa2,1|1|fdeda0,2|1|fded9f,2|3|fdea9d,1|4|fde99d,4|4|fde79a"
  3. var common_xy = array(765, 554)/
  4. if(FindMultiColorS(common_xy[0]-10, common_xy[1]-10,common_xy[0]+10, common_xy[1]+10 0.8, common,5))
  5.       traceprint("找到")
  6. end
  7. //函数源码
  8. function FindMultiColorS(x1, y1, x2, y2, sim, color, dir)//范围多点找色
  9.         var xy = array()
  10.         //将颜色组分割成大漠的格式
  11.         var first_color = strformat("%s%s", strsub(color, 0, 6), "-000000")
  12.         var offset_color = strsub(color, 7, strlen(color))
  13.         var x = x1
  14.         var y = y1
  15.         //寻找颜色是从左到右,从上到下的
  16.         while(y < y2)
  17.                 //确定主色
  18.                 if(dm.FindColor(x, y, x2, y2, first_color, sim, dir, xy[0], xy[1]) == 1)
  19.                         //调用多点找色
  20.                         if(findColorCmpMulti(xy[0], xy[1], sim, color))
  21.                                 return true
  22.                         else
  23.                                 x = xy[0]
  24.                                 y = xy[1]
  25.                                 while(x < x2)
  26.                                         if(dm.FindColor(x, y, x2, y2, first_color, sim, dir, xy[0], xy[1]) == 1)
  27.                                                 if(findColorCmpMulti(xy[0], xy[1], sim, color))
  28.                                                         return true
  29.                                                 elseif(x2 <= xy[0] + 1)
  30.                                                         break
  31.                                                 else
  32.                                                         x = xy[0] + 1
  33.                                                 end
  34.                                                 // traceprint(x)
  35.                                                 // traceprint(y)
  36.                                                 // traceprint(x2)
  37.                                                 // traceprint(y2)
  38.                                         else
  39.                                                 break
  40.                                         end
  41.                                 end
  42.                                 y = y + 1
  43.                                 if(y >= y2)
  44.                                         return false
  45.                                 end
  46.                         end
  47.                 else
  48.                         return false
  49.                 end
  50.         end
  51. end
复制代码


回复

使用道具 举报

发表于 2016-8-28 19:49:07 | 显示全部楼层
加扣扣 392076936
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-9-25 17:25:01 | 显示全部楼层
{:soso__4011813854091704040_1:}
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

推荐上一条 /2 下一条

关闭

小黑屋|TC官方合作论坛 (苏ICP备18045623号)

GMT+8, 2024-9-29 00:45 , Processed in 0.033758 second(s), 23 queries .

Powered by 海安简单软件服务部

© 2008-2019 版权所有 保留所有权利

快速回复 返回顶部 返回列表