背景:想利用minitouch實現(xiàn)拖拽的效果,開始的思路是直接從坐標(biāo)1滑動到坐標(biāo)2扮超,但是運行后發(fā)現(xiàn)沒有效果扒腕,后來終于解決了,因此把這個過程記錄下來土铺。
minitouch的命令格式
minitouch 可以實現(xiàn)點擊胶滋、滑動、松開手指悲敷,基本命令如下:
d <contact> <x> <y> <pressure>?
示例輸入:?d 0 10 10 50 指在x=10究恤,y=10,以壓力50按壓后德,并記錄此為第contact=0個操作位置
m <contact> <x> <y> <pressure>
示例輸入:?m 0 10 10 50 指操作目標(biāo)contact=0 使用pressure=50的壓力原來坐標(biāo)滑動到 x = 10部宿,y =10
u <contact>
?示例輸入:u 0 指松開contact =0的操作目標(biāo)
w <ms>
示例輸入:w 50,指立即等待?<ms>?毫秒
c
提交當(dāng)前更改的觸摸集,使它的在屏幕上播放理张。在提交之前赫蛇,輸入的命令不會有效果
minitouch實現(xiàn)拖拽效果
拖拽拆分,即點擊坐標(biāo)點a(x1雾叭,y1)悟耘,滑動到坐標(biāo)點b(y1, y2)然后松開织狐,使用minitouch的命令寫下來就
d 0 x1 y1 50
c
m 0 x1 y1 50
c
u
這是我第一階段輸入的命令暂幼,但是實際沒有起到滑動的效果。打開開發(fā)者模式中的坐標(biāo)赚瘦,可以指示觸摸軌跡的指針是有痕跡的粟誓,說明命令輸入有效但是沒有生效。
查了一下起意,看到一種思路就是將移動的路徑拆分成幾個小段鹰服,并在其中增加延時。所以把拖拽改成從起始位置到目標(biāo)位置拆分10個中間節(jié)點揽咕,并且每個節(jié)點滑動過去后增加100毫秒的延時悲酷,在實現(xiàn)代碼中如下
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"
再次運行,即可正常進行拖拽了??