【minitouch】如何实现拖拽效果

背景:想利用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

你可能感兴趣的:(【minitouch】如何实现拖拽效果)