背景:想利用minitouch实现拖拽的效果,开始的思路是直接从坐标1滑动到坐标2,但是运行后发现没有效果,后来终于解决了,因此把这个过程记录下来。
minitouch的命令格式
minitouch 可以实现点击、滑动、松开手指,基本命令如下:
d
示例输入: d 0 10 10 50 指在x=10,y=10,以压力50按压,并记录此为第contact=0个操作位置
m
示例输入: m 0 10 10 50 指操作目标contact=0 使用pressure=50的压力原来坐标滑动到 x = 10,y =10
u
示例输入:u 0 指松开contact =0的操作目标
w
示例输入:w 50,指立即等待
毫秒 c
提交当前更改的触摸集,使它的在屏幕上播放。在提交之前,输入的命令不会有效果
minitouch实现拖拽效果
拖拽拆分,即点击坐标点a(x1,y1),滑动到坐标点b(y1, y2)然后松开,使用minitouch的命令写下来就
d 0 x1 y1 50
c
m 0 x1 y1 50
c
u
这是我第一阶段输入的命令,但是实际没有起到滑动的效果。打开开发者模式中的坐标,可以指示触摸轨迹的指针是有痕迹的,说明命令输入有效但是没有生效。
查了一下,看到一种思路就是将移动的路径拆分成几个小段,并在其中增加延时。所以把拖拽改成从起始位置到目标位置拆分10个中间节点,并且每个节点滑动过去后增加100毫秒的延时,在实现代码中如下
d_x = (x2 - x1)/10
d_y = (y2 - y1)/10
command = ""
command += "d 0 {} {} 50\\nc\\n".format(x1, y1)
for i in range(0, 10):
command += "m 0 {} {} 50\\nc\\n".format(x1 + i * d_x, y1 + i * d_y)
command += "w 100\\nc\\n"
command += "m 0 {} {} 50\\nc\\n".format(end_x, end_y)
command += "u 0\\nc\\n"
再次运行,即可正常进行拖拽了
参考文章:http://lm.432234.com/archives/1144.html