滚轮形式的日期该如何修改

有群友问怎么修改QQ资料里面的日期,我打开看了一下,发现日期是滚轮形式,如下图:

滚轮形式的日期该如何修改

这种形式的日期在修改的时候就像滚轮转动一样,上下有渐隐和透视变形,虽然看起来像是在滚动,其实本质上还是上下拖动,而且是等距离拖动,比如:当前是1995年,我要变成1996年,那么我需要向上滑动一个单位的距离(我的模拟器这个单位距离是37像素),那么如果我要改成2000年,那么就需要5个单位距离。

那问题来了这个单位距离怎么测量呢?

滚轮形式的日期该如何修改

我是这样测量的,按照上图我从下方滑动,滑动距离要大一些,可以看到我滑动到接近顶部位置的时候,日期有原来的1995年,变成了2013年,变动了18个单位,然后我在用抓抓工具,获取点1和点2之间的距离,整个距离分成18份,就是单位距离的大小了。

需要注意一点,这个测量是粗略测量计算的结果,还要经过几次测试调整,以为自己测试为例,两点测量计算结果是 807-112=695,分成18份以后,单位距离是38.6,但是我测试发现当滑动年份比较长的时候,会出现误差1年的情况,于是稍微调整了一下,测试37这个数字会更准确写。

得到准确的单位距离以后,如果我想往后修改5年,那么我就可以向上拖动5个单位距离。

下一步我们要获取当前的日期了,这里我用的是获取界面xml,然后提取xml里面index这个节点名对应的text。

Import “shanhai.lua”
dim m=shanhai.getuixml()
dim a=ShanHai.FindXmlKeya(m,”index”,”3″,”text”)
TracePrint “当前选择日期是”&a(0)&a(1)&a(2)

选择”index”,”3″,这个节点名和节点值是因为整个界面的xml,只有当前日期的年月日是这个,具有唯一性。

获取完日期以后,稍微处理一下,去掉日期的单位,比如1995年,我们只要1995这个数字,目的是方便加减运算。

dim b = UTF8.Left(a(0), utf8.len(a(0))-1)

这个变量b就是当前时间的年份。

提取好数字以后,就可以去计算要滑动几个单位距离了。

比如,要修改2005年,那么就用2005-b,计算的结果就是需要滑动的单位距离数量。

下面就是滑动了,假设当前日期年份的坐标是x,y,滑动距离数量用i表示,当然i可以是正数,也可以是负数,正数向上滑动,负数向下滑动。

TouchDown x, y, 1
TouchMove x, y – 37 * i, 1, 2000
TouchUp 1

稍微强调一下,为了消除惯性的影响,滑动时间不要太短,我的代码用了2秒钟。

整个原理就是上面这些,当然年月日有3个滚轮,那么我们可以做成一个函数。

滚轮形式的日期该如何修改
自定义函数以后,我把涉及到的几个变量都做成了参数,分别介绍一下:

x:当前日期的横坐标

y:当前日期的纵坐标

t:滑动的单位距离
d:要修改年月日的哪一个,0代表年,1代表月,2代表日

k:你想要的日期,年月日

下面是源码

Import “shanhai.lua”
修改(105, 808,37,0,1995)
修改(290, 808,37,1,5)
修改(460, 808,37,2,3)

Function 修改(x,y,t,d,k)
dim m=shanhai.getuixml()
dim a=ShanHai.FindXmlKeya(m,”index”,”3″,”text”)
TracePrint “当前选择日期是”&a(0)&a(1)&a(2)
dim b = UTF8.Left(a(d), utf8.len(a(d))-1)
Dim i=k-b
TouchDown x, y, 1
TouchMove x, y – t * i, 1, 2000
TouchUp 1
End Function

原文始发于微信公众号(3分钟学堂):

除特别注明外,本站文章均为原创,转载请注明出处和链接!
本文链接地址: https://pumpkinit.com/859.html
Pumpkin  [https://pumpkinit.com]  感谢

发表评论

电子邮件地址不会被公开。 必填项已用*标注