盛世宏图 发表于 2025-5-25 14:12:59

安卓/IOS脚本开发按键精灵滑动命令小本事

写脚本的时候,总有一些事与愿违的地方,一个不经意的小地方,大概会令我们寻找半天才发现而且解决,将我们平时遇到的积累起来,是一笔不小的财产,集腋成裘。
划动的本事
无论是游戏或者应用软件,我们都常常用的一个功能----划动,但是你真的相识滑动吗?使用他的过程中有没有遇到同样的代码,但是划动的距离不一样,又或者想拖动一个物品之类的东西,却无法成功。这都是对于划动,也就是Swipe的应用不当产生的问题。
一个平凡的划动:


[*] Swipe 100,100,200,200
我们来思考一下一个划动操纵必要什么步骤:
(一)按下一个坐标并捆绑一个触摸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的命令,方便使用,这样就能很好的解决划动出现的惯性问题。

这边还额外分享下用户第一次使用工具经验分享:
”脚本的易用性“是推广脚本中遇到的大问题,你一样一样的添加功能的时候,用户可以很快担当,但是一开始没有接触过的用户,拿到你写的功能很庞大的脚本时,他甚至不知道怎样动手。当然,你可以写上脚本的使用阐明,这是一个欠好不坏的主意,很多用户不喜欢看这个,他们很容易在根据界面上的文字勾选输入就运行,然后出现各种问题或者是没有反应,就认为此脚本不能用,然后。。。。就没有然后了。

因此,你必要做的是在用户启动的时候,智能的判断用户当前的状态并实施对应的方法回归到同一的地方然后开始进行脚本。
打个比方,脚本的功能是自动过副本,起始点是主界面,如果用户使用的时候并不在主界面,那么有几种情况,最坏的一种是你的第一步操纵并没有识别界面,于是就会导致功能完全庞杂(不小心花掉了元宝之类的重要资源怎么办!),中等的结果就是你的每一步操纵都有严格的判断,那么脚本运行的大部分情况是不做任何动作,当然这也欠好,我们盼望的是最好的结果,游戏自动回到主界面,然后就回到你的正常逻辑,这也是多个功能之间衔接的最佳办法----让他们有一个共同的起点(起始界面)。
每个应用的逻辑不同,起点也由你自己决定,但是我比力保举的是,让脚本包含应用的自启动,这样我们就能够完美的控制每个用户的操纵习惯差异性,当我们识别不到起点时,关闭应用再开启,识别到可回到起点的特征时。实验相关操纵来回到起点。

使用此方式,判断应用的开启状态至关重要,我们可以使用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
如果不进行这样的判断就启动应用,重复的启动大概会导致应用瓦解。一个应用大概不止一个人做,因此,用心做好每一个细节和体验,能让你在竞争者中脱引而出。

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
页: [1]
查看完整版本: 安卓/IOS脚本开发按键精灵滑动命令小本事