更新时间2019-07-18 18:17:04
按键精灵手机版判断3个图其中一个,有就怎么,没有就怎样,怎么写?
如找图一,然后是怎么,否则又怎样,往下命令图二,找到有怎么,找不到又怎么,但这样的缺点是命令到图二的时候遇到图1 ,无法作出我要的命令,请问怎么解决?最好是直接3个图判断有没有其中一个图,就直接是怎么,否则怎么,命令怎么写?
作为按键精灵安卓版最核心的内容(至少我这么觉得),图色操作是必备的,可能有童鞋仅用点击和延时来做脚本也能达到效果,但是这样的脚本不具备良好的抗压能力,可能手机卡顿一下,可能网络卡顿一下,就全乱套了。而使用图色脚本,可以根据界面的特征来识别出当前游戏或者应用的状态,做出相应操作,稳定性大大增强。要做出出色的脚本,以下几个图色命令必须掌握:
1. GetPixelColor()
功能为获取屏幕上某个坐标点的颜色,具体用法为:
Dim rColorrColor = GetPixelColor(300, 300) //获取坐标300,300的点的颜色TracePrint “这个点的颜色为:”&rColor复制代码
通常与判断语句一起使用:
Dim rColorrColor = GetPixelColor(300, 300)If rColor = "FFFFFF" Then TracePrint "坐标(300,300)的像素点颜色是FFFFFF,说明当前处于XX界面下"Else TracePrint "坐标(300,300)的像素点颜色不是FFFFFF,说明还没到XX界面"End If复制代码
虽然很简单,并且我们直接用他的时候也不多,但是下面的几个图色操作都是基于这个命令进行的,因此相当重要,必须理解其意思,返回的值是一个十六进制的BGR值,我们来了解一下BGR值以方便更好的理解命令的意思,所有的颜色都可以由蓝绿红三个颜色组成,不同的混合比例形成不同的颜色,在计算机中,我们将这三个颜色分量都分成255个级别,0为颜色最淡,255为颜色最深,一个点(像素)就由三个255级别的分量组成。而0-255用十六进制表示即为00-FF(有兴趣的同学自己搜索一下十六进制),我们不需要去记颜色,知道意思即可。 给你们个图,自己体会下意思~If CmpColorEx("300|500|123456-102030,305|505|FFFFFF",0.9) = 1 ThenTracePrint "全部点颜色相等"ElseTracePrint "有一个或多个颜色不符合"End If复制代码
由于单个点坐标的颜色比较来判定图形容易误判,我们来看看下面的两个图,两个图中,如果我们只获取一个点来判定,比如取第二行第二排,也就是(2,2)这个点来判定,我们会得到一样的结果,没有办法区分两个图,但是如果我们取两个点,分别是(2,2)和(4,3),我们就可以分辨出这两个图。取得点越多,正确识别率越高,但是相应的耗时也会增加,容易混淆的图建议取多个点比较,反之取3到4个点基本就够用了。If CmpColorEx("2|2|000000-202020,4|3|000000-202020", 0.9) = 1 Then TracePrint "这是第二个图"Else TracePrint "这不是第二个图"End If复制代码
2|2|000000-202020分别为取的第一个点的X坐标、Y坐标、颜色、允许的偏色范围,4|3|000000-202020分别为取的第二个点的X坐标、Y坐标、颜色、允许的偏色范围,其中偏色范围的意思是指相应的坐标点的颜色不需要完全相同,允许有偏色,偏色的量由我们自己来定,分别为BGR三个颜色分量的偏色!00的偏色范围20,即前后各10的偏色范围,如果是30的偏色范围为20的话,就是20-40都可。这里,我推荐偏色都设置成101010。下图就是000000-202020允许的偏色范围:1. 找到想取的颜色的点,按Ctrl+数字键选取(数字键1就对应序号的1)。
2. 自定义偏色范围,在框内写上偏色值。
3. 将选取的点勾起来
4. 生成命令选择CmpColorEx
5. 点击复制完整命令
直接黏贴在脚本编辑区中吧!就这么快!
3. FindMultiColor
多点找色,具体用法是:
Dim IntX,IntYFindMultiColor 0,0,0,0,"FFFFFF","4|1|2F9772-000000|123456-101010,3|7|378757",0,0.9,intX,intYIf intX > -1 ThenTracePrint "找到啦,坐标在"&intX&","&intYElseTracePrint "没找到"End If复制代码
多点找色,也叫做区域多点找色,是用来寻找位置会发生变化,但是特征没变的图形的,一般用来代替区域找图用,效率更高。
多点找色的原理是利用寻找点的偏移位置的颜色来判定,以达到确定寻找点的位置,我们来看看下图,我们希望寻找到一个黑色的点,如果在整张图中寻找,我们会得到3个结果,这并不是我们想要的,于是我们需要知道其他的条件,现在,我还知道这个黑色的点的下面也有一个黑色的点,于是我们去将这三个黑点的下面一个点进行判定,得到了唯一的我们想要的点的坐标,愉快的进行操作吧!
Dim IntX,IntYFindMultiColor 0,0,0,0,"000000","0|1|000000-202020",0,0.9,intX,intYIf intX > -1 ThenTracePrint "找到啦,坐标在"&intX&","&intYElseTracePrint "没找到"End If复制代码
一开始,先定义一个坐标(intX和intY,可以随自己喜好命名),用来存放找到的位置的坐标。0,0,0,0的意思是搜索范围的起始坐标和结束坐标(四个0默认是全屏),搜索范围是一个正方形,起始坐标在左上角,结束坐标在右下角,比如:10,20,30,40就是坐标(10,20)和坐标(30,40)组成的矩形范围: