- 按键工程师
- 742060
- 2281
- 5
- 881 朵
- 10799 个
- 580 个
- 48300
- 2011-08-18
|
1#
t
T
发表于 2015-10-22 16:14
|
|只看楼主
让脚本能够适配所有分辨率的特殊技巧 本文由按键学院提供技术支持 按键学院交流①群(1群已满):376122403 按键学院交流②群(2群):372671254 按键学院交流③群(3群):170084238 【按键学院】安卓课程(115768679)
安卓脚本的多分辨率适配一直都是让大家比较头疼的问题。因为安卓手机的多种多样,分辨率也不一致,导致了写完一个脚本后还需要考虑到很多不同分辨率下的运行情况。 在之前的院刊中有介绍了两种适应分辨率的方法,一个是通过编写一个比例转换的函数,对特征数据进行比例转换,另外更简单的方法就是用SetScreenScale 屏幕缩放命令,让按键自动转换比例数据。安卓实战——让脚本适应多种分辨率 但是SetScreenScale命令并不是万能的,无法保证100%的在所有的分辨率下都能兼容,对于部分颜色特征无法识别的我们就需要进行单独处理。 | 建立多点特征数据编写脚本的时候需要先把多点颜色特征保存到数组里,实现数据和函数分离,方便之后的调用、管理,把特征数据全部封装到函数里,然后在脚本的开头调用这里假设颜色特征是在480*854分辨率下获取到,脚本也就基于480*854分辨率进行开发。 - Dim 特征1,特征2,特征3
- Function 主数据
- 特征1 = Array(349, 241, 450, 337, "FAFAFA", "17|-11|201C1C,-7|-48|201C1C,-17|-15|1733EC,-20|-5|1430E9")
- 特征2 = Array(149, 231, 235, 321, "CBB41E", "-33|-43|E4DEA3,1|-44|E0E06B,-30|7|B9A971,-56|12|AE690A")
- 特征3 = Array(343, 525, 458, 625, "0DD100", "-15|40|FFFFFF,-33|55|0CBB00,-40|22|FFFFFF,-105|12|00C3FF")
- End Function
复制代码这里是用多点找色的特征数据,前4个元素是找色的范围,后面两个数据是多点找色的第一个颜色点以及偏移颜色组 除了建立这个主数据外,需要再建立一个兼容用的数据函数。例如:上面的三个特征中,在实际测试过程中,发现【特征1】在480*800的分辨率下无法识别,但是其他的特征可以正常识别,那我们需要建立一个兼容的数据函数,单独的在480*800分辨率下重新获取一次【特征1】的多点颜色数据 - Dim 当前分辨率,x,y
- x = GetScreenX()
- y = GetScreenY()
- 当前分辨率 = x & y
- Function 兼容数据
- If 当前分辨率 = 480800 Then '分辨率480*800 下的数据
- 特征1 = Array(249,239,342,323,"05B802","-20|17|FFFFFF,-48|25|D69C00,-19|41|272BDD,-33|-7|00D0EA")
- End If
- End Function
复制代码因为只有【特征1】无法识别,所以只需要单独做这个数据就行了,其他的特征不需要重新做 封装一个屏幕缩放的函数- Dim 开发分辨率
- Function 屏幕缩放
- Dim scrX,scrY
- '这里设置成开发的分辨率
- scrX = 480
- scrY = 854
- SetScreenScale scrX, scrY
- 开发分辨率 = scrX & scrY
- End Function
复制代码 编写多点找色函数- Function 多点找色(颜色特征, 兼容分辨率)
- '当当前的分辨率和兼容分辨率参数一致时,就取消缩放,直接用兼容分辨率下的特征来进行找色
- If InStr(1, 兼容分辨率, 当前分辨率) > 0 and 当前分辩率 <> 开发分辩率 Then
- ResetScreenScale
- End If
- FindMultiColor 颜色特征(0), 颜色特征(1), 颜色特征(2), 颜色特征(3), 颜色特征(4), 颜色特征(5), 2, 0.9, intX, intY
- If intX > -1 Then
- 多点找色 = True
- Else
- 多点找色 = False
- End If
- '找色完成后重新缩放屏幕
- If InStr(1, 兼容分辨率, 当前分辨率) > 0 and 当前分辩率 <> 开发分辩率 Then
- Call 屏幕缩放()
- End If
- End Function
复制代码 完整代码以及具体应用- Dim 当前分辨率,x,y,开发分辨率
- x = GetScreenX()
- y = GetScreenY()
- 当前分辨率 = x & y
- Dim 特征1,特征2,特征3
- Call 屏幕缩放()
- Call 主数据()
- Call 兼容数据() '把无法兼容的新的图色数据进行覆盖
- TracePrint 多点找色(特征1, 0)
- TracePrint 多点找色(特征1, 480800) '能够兼容480*854以及480*800两种分辨率图色数据
- TracePrint 多点找色(特征2, 0)
- TracePrint 多点找色(特征3, 0)
- Function 主数据
- 特征1 = Array(349, 241, 450, 337, "FAFAFA", "17|-11|201C1C,-7|-48|201C1C,-17|-15|1733EC,-20|-5|1430E9")
- 特征2 = Array(149, 231, 235, 321, "CBB41E", "-33|-43|E4DEA3,1|-44|E0E06B,-30|7|B9A971,-56|12|AE690A")
- 特征3 = Array(343, 525, 458, 625, "0DD100", "-15|40|FFFFFF,-33|55|0CBB00,-40|22|FFFFFF,-105|12|00C3FF")
- End Function
- Function 兼容数据
- If 当前分辨率 = 480800 Then '分辨率480*800 下的数据
- 特征1 = Array(249,239,342,323,"05B802","-20|17|FFFFFF,-48|25|D69C00,-19|41|272BDD,-33|-7|00D0EA")
- End If
- End Function
- Function 屏幕缩放
- Dim scrX,scrY
- '这里设置成开发的分辨率
- scrX = 480
- scrY = 854
- SetScreenScale scrX, scrY
- 开发分辨率 = scrX & scrY
- End Function
- Function 多点找色(颜色特征, 兼容分辨率)
- '当当前的分辨率和兼容分辨率参数一致时,就取消缩放,直接用兼容分辨率下的特征来进行找色
- If InStr(1, 兼容分辨率, 当前分辨率) > 0 and 当前分辩率 <> 开发分辩率 Then
- ResetScreenScale
- End If
- FindMultiColor 颜色特征(0), 颜色特征(1), 颜色特征(2), 颜色特征(3), 颜色特征(4), 颜色特征(5), 2, 0.9, intX, intY
- If intX > -1 Then
- 多点找色 = True
- Else
- 多点找色 = False
- End If
- '找色完成后重新缩放屏幕
- If InStr(1, 兼容分辨率, 当前分辨率) > 0 and 当前分辩率 <> 开发分辩率 Then
- Call 屏幕缩放()
- End If
- End Function
复制代码- 您所在的用户组无法下载或查看附件
学院院刊总目录:http://bbs.anjian.com/showtopic-584228-1.aspx
|