首頁>Club>
5
回覆列表
  • 1 # 深思數盾加密鎖

    我們在用找色的時候比較頭痛的問題是很難找到一個色值能準確的和其它目標區別,如果想用多點找色又得把區域定得很小,只能判斷是還是不是。我這個函式解決了上面的兩個問題,我們可以用多個色值,進行大範圍查詢,這樣既可以用多個色值減小誤差,也可以在大的區域內找目標,而且因為用了以找主色為主線,找到才確定輔色的方式,效率大大提高,當然還有找圖所沒有的相容性和便利性,輔色的數量可變更增加了函式應用範圍。函式使用不多,難免有考慮不周的地方,發現BUG請跟帳說明或者糾正,聯絡本人也可以。

    --H.R製作,H.R LUA指令碼教學群:165488683--引數說明:一個主色值,相似度及查詢範圍,這個和一般找色沒差別 --W,H這兩個引數為主色找到後找輔色的範圍,W表示主色前後的距離,H表示主色上下的距離,這樣找輔色的區域總大小是2W*2H --ARG用來存放輔助色的陣列,我也不知道什麼原因,觸控使用可變引數總是報錯,不得於只有使用一個數組來做引數,這樣我們的輔助色數量也是可變的,只是在呼叫的時候,得用{}把色值包起來。如:{0xDBEEFA,0xDCEFFC,0xDDEEFB,0x1295E9,0xff0000}。--返回值說明:返回三個引數,分別是成功標誌,找到是TRUE,找不到是FALSE,主色值座標,找到就是有效點座標點,找不到返回-1.function mutifindcolor(zhusezhi,xsd,x1,y1,x2,y2,w,h,arg)cgbj=0;repeat xz,yz=findColorInRegionFuzzy(zhusezhi,xsd,x1,y1,x2,y2); if xz>0 then for i,v in pairs(arg) do local xf,yf=findColorInRegionFuzzy(arg[i],xsd,xz-w,yz-h,xz+w,yz+h); if xf>0 then cgbj=1; else cgbj=0; break; end end if cgbj==1 then return true,xz,yz; end xtmp,ytmp=xz+1,yz; repeat xz1,yz1=findColorInRegionFuzzy(zhusezhi,xsd,xtmp,ytmp,x2,ytmp); if xz1>0 then for i,v in pairs(arg) do local xf,yf=findColorInRegionFuzzy(arg[i],xsd,xz1-w,yz1-h,xz1+w,yz1+h); if xf>0 then cgbj=1; else cgbj=0; break; end end if cgbj==1 then return true,xz1,yz1; end xtmp=xz1+1; end until xz1<0 y1=yz+1; enduntil xz<0return false,-1,-1;endfunction main()f,x,y=mutifindcolor(0xDBEEFB,85,700,0,1023,590,10,10,{0xDBEEFA,0xDCEFFC,0xDDEEFB,0x1295E9,0xff0000}); if f then click(x,y); else notifyMessage("沒找到!"); mSleep(2000); endendfunction click(x,y) touchDown(0, x, y); mSleep(90); touchUp(0); end

    深思君為你解答(www.sense.com.cn)

  • 中秋節和大豐收的關聯?
  • 男友車禍身亡,遺腹子的祖父母拒絕分割賠償款,孩子的權益該如何保護?