- 高中三年级
- 3392724
- 654
- 0
- 49 朵
- 957 个
- 64 个
- 24700
- 2015-07-27
|
1#
t
T
发表于 2015-10-29 17:13
|
|只看楼主
小知识点合集2 - 您所在的用户组无法下载或查看附件
本文由按键学院提供技术支持 按键学院交流①群(已满):376122403 按键学院交流②群(已满):372671254 按键学院交流③群(快满):170084238 按键学院安卓①群:115768679 写脚本的时候,总有一些事与愿违的地方,一个不经意的小地方,可能会令我们寻找半天才发现并且解决,将我们平时碰到的积累起来,是一笔不小的财富,积少成多,跟着我记下书写脚本的点点滴滴吧。- 您所在的用户组无法下载或查看附件
1. 划动的技巧无论是游戏或者应用软件,我们都常常用的一个功能----划动,但是你真的了解滑动吗?使用他的过程中有没有碰到同样的代码,但是划动的距离不一样,又或者想拖动一个物品之类的东西,却无法成功。这都是对于划动,也就是Swipe的应用不当产生的问题。 一个普通的划动: 我们来思考一下一个划动操作需要什么步骤:(一)按下一个坐标并捆绑一个触摸ID(二)划动一个距离(三)释放指定的触摸ID 但是Swipe仅需要输入起始坐标和结束坐标,他帮我们设定了按下的延时,划动的延时,抬起手指的延时,方便是方便了,大部分情况下也没有问题,但是有一些特殊情况下并不试用,例如我需要的是拖动一个APP的位置,那么我需要按下长达1秒左右才开始划动,这种情况我们并不能使用Swipe,我们需要自己写整个动作:- TouchDown 100, 100, 1 //按一个坐标并指定ID
- Delay 1000
- TouchMove 200, 200, 1, 500 //从起始坐标划动到指定坐标,历时500毫秒
- Delay 1000
- TouchUp 1 //释放指定ID的触摸
复制代码 我们在划动到指定坐标后依旧延时了1000毫秒,这个延时主要可以用来阻止划动之后的惯性,许多的游戏或者应用,他们的划动窗口是带有回弹和惯性的,这也是我们经常出现同样代码划动距离不一的主要原因。但是,即使如此,依旧也会有偏差,因为惯性并不能完全消除,那么我们可以使用一些小技巧来解决这个问题:- Function 精准划动(stx, sty, endx, endy, stdelay, movedelay, enddelay,id)
- TouchDown stx, sty,id
- Delay stdelay
- If stx >= endx and sty >= endy Then
- TouchMove endx-1, endy-1, id, movedelay/2
- Delay movedelay/4
- TouchMove endx, endy, id, movedelay / 4
- ElseIf stx >= endx and sty <= endy Then
- TouchMove endx-1, endy+1, id, movedelay/2
- Delay movedelay/4
- TouchMove endx, endy, id, movedelay / 4
- ElseIf stx <= endx and sty <= endy Then
- TouchMove endx+1, endy+1, id, movedelay/2
- Delay movedelay/4
- TouchMove endx, endy, id, movedelay / 4
- ElseIf stx <= endx and sty >= endy Then
- TouchMove endx+1, endy-1, id, movedelay/2
- Delay movedelay/4
- TouchMove endx, endy, id, movedelay / 4
- End If
- Delay enddelay
- TouchUp id
- End Function
- 精准划动(100,100,200,200,1000,500,1000,1)
复制代码 原理很简单,我们可以先划动超出一点点,再往回划动超出的那一点,一个像素点即可,起始和结束坐标的位置关系有四种,分别考虑进去即可,然后封装成一个类似Swipe的命令,方便使用,这样就能很好的解决划动出现的惯性问题。 2. 用户的第一次 脚本的易用性是推广脚本中遇到的大问题,你一样一样的添加功能的时候,用户可以很快接受,但是一开始没有接触过的用户,拿到你写的功能很庞大的脚本时,他甚至不知道如何下手。当然,你可以写上脚本的使用说明,这是一个不好不坏的主意,很多用户不喜欢看这个,他们很容易在根据界面上的文字勾选输入一番就运行,然后出现各种问题或者是没有反应,就认为此脚本不能用,然后。。。。就没有然后了。 因此,你需要做的是在用户启动的时候,智能的判断用户当前的状况并实施对应的方法回归到统一的地方然后开始进行脚本。打个比方,脚本的功能是自动过副本,起始点是主界面,如果用户使用的时候并不在主界面,那么有几种情况,最坏的一种是你的第一步操作并没有识别界面,于是就会导致功能完全错乱(不小心花掉了元宝之类的重要资源怎么办!),中等的结果就是你的每一步操作都有严格的判定,那么脚本运行的大部分情况是不做任何动作,当然这也不好,我们希望的是最好的结果,游戏自动回到主界面,然后就回到你的正常逻辑,这也是多个功能之间衔接的最佳办法----让他们有一个共同的起点(起始界面)。 每个应用的逻辑不同,起点也由你自己决定,但是我比较推荐的是,让脚本包含应用的自启动,这样我们就能够完美的控制每个用户的操作习惯差异性,当我们识别不到起点时,关闭应用再开启,识别到可回到起点的特征时。执行相关操作来回到起点。 使用此方式,判断应用的开启状态至关重要,我们可以使用GetRunningApp来获取运行中的应用列表,然后进行相关处理:- Dim MyApp = "包名"
- Dim IsRunning = false
- Dim arr = GetRunningApp()
- For Each n In arr
- TracePrint n //遍历arr数组并输出所有获取的包名字符
- If n = MyApp Then
- TracePrint "找到了,停止查找"
- IsRunning = true
- Exit For
- End If
- Next
- If IsRunning = false Then
- RunApp MyApp
- End If
复制代码 如果不进行这样的判断就启动应用,重复的启动可能会导致应用崩溃。一个应用可能不止一个人做,因此,用心做好每一个细节和体验,能让你在竞争者中脱引而出。
- 您所在的用户组无法下载或查看附件
|