平时我们点击手机上的坐标就几种情况
1.通过找图找色找字 获取到目标的位置坐标信息 然后tap intX,intY就可以了
2.有些按钮在指定界面是固定的位置雷打不动 比如各个界面的右上关闭按钮 我们也不需要做图色找到了对应的关闭按钮 只是需要按键抓抓获取这个界面的关闭按钮的坐标 用tap 100,200这样点击下就实现了关闭
问题:
平时我们项目小 基本上和坐标相关的主要是这2个情况 还有一些非常少见的这里就不说了
项目大的情况下 我的前一个脚本2w多行 就拿之前的 游戏主界面的关闭按钮来算 可能我登录部分操作就需要关闭3次游戏主界面 那么就需要
if 多点bi色(多点bi色_游戏主界面)>-1 then
tap 400,1040 //主界面关闭按钮坐标
end if
这样写3次 ,如果签到也需要关闭1次 日常也需要4次 退出更需要3次,每次我们都要写tap 400,1040 很麻烦而且都要注释 而且如果整个项目要更换手机分辨率 要改动这一个坐标,我们需要找11个位置依次调整 这只是其中一个坐标修改的难点 如果大型项目 里面会充斥的大量的这种情况的坐标 导致我们调整修改的难度非常大
应对办法:
1.点击坐标数组格式化
Dim 多点bi色_上半部分标志=array("38|232|E1833B-202020,69|242|E1833B-202020,52|263|E1833B-202020,31|250|E1833B-202020",0.9,100,"上半部分标志")
Dim 坐标_桌面界面_系统应用图标按钮=array(51,115,0,0,"发现界面_右上关闭按钮")//鉴于传奇天下和热血战纪的坐标修改的巨大困难 项目很大就统一把坐标再这里以这样的格式声明成固定格式数组来使用 方便之后的修改
将坐标数组化 和多点找色 找图一样信息都数组化 调用的时候用自己写的点击函数来点击一下就可以了 一旦该坐标发生了变化 我们只需要调整这个数组的元素内容就可以把所有的该坐标数组都会跟着变化
call tapX(坐标_桌面界面_系统应用图标按钮)
缺点:因为公共变量是掺杂有中文 我们打出坐标二字后 无法有智能提示 一旦这类的坐标数组多起来容易混淆记不清楚
/* 作用:配合再声明区定义的坐标数组 点击对应的坐标 例子:tapX 坐标_发现界面_右上关闭按钮 声明区定义的内容 Dim 坐标_发现界面_右上关闭按钮=array(100,200,0,0,"发现界面_右上关闭按钮") 参数:就一个数组 第一个元素是点击的横坐标 第二个是点击的纵坐标 第三个是第四个分别对应2个方向上的偏移 第五个是代表该坐标的含义 用法 直接tapX 坐标_桌面界面_系统应用图标按钮 即可 问题:问题不在于函数本身 而是在于函数的参数 坐标数组 因为一旦变量加入了中文 就无法智能提示对应的可选变量了 虽然如果把坐标变成函数 可以实现智能提示 但是总不能一个坐标对应一个函数 更费劲了 简单说 这样调用对用的坐标数组 不会智能提示 好麻烦 */ Function tapX(坐标数组) Dim 全组,分组,result,临时X,临时Y result=-1 //1检测下数组是否符合要求(1)数组元素数量是否大于等于2 数组前2个元素是否是数值 If UBOUND(坐标数组) < 1 Then result = 0 TracePrint "点击坐标:-<" & cstr(坐标数组(4)) & ">-失败 坐标数组存在问题" ElseIf not IsNumeric(坐标数组(0)) or not IsNumeric(坐标数组(1)) or not IsNumeric(坐标数组(2)) or not IsNumeric(坐标数组(3)) Then result = 0 TracePrint "点击坐标:-<" & cstr(坐标数组(4)) & ">-失败 坐标数组存在问题" Else 临时X = CInt(坐标数组(0)) + CInt(坐标数组(2)) 临时Y = CInt(坐标数组(1)) + CInt(坐标数组(3)) Tap 临时X, 临时Y TracePrint "点击坐标:=[" & cstr(坐标数组(4)) & "]=, [" & cstr(临时X) & ", " & cstr(临时Y) &"]" End If End Function
2.点击坐标函数化(推荐)
3我们把点击该坐标写入一个函数内
Sub 点击_游戏主界面_右上关闭按钮()
Tap 400,1040
End Sub
优点:这个写法有智能提示 只要我们写了点击_后 就会有智能提示 非常方便
缺点:会造成大量的函数