定向滑动 slide_d(table,number)免费

格式 : slide_d( {起点x,起点y,终点x1,终点y1} , 速率 )
适用场景 : 游戏模拟手指滑动/单指滑动
关联叉叉助手函数 : createHUD、showHUD、hideHUD、touchDown、touchMove、touchUp、mSleep

单向运动,改变方向会重新从新的起点开始运动:
定向滑动.gifimage.png
**

  1. function slide_d(t,w)
  2. local w = w or 5 --[[速率默认5像素,整数型]]
  3. local id = createHUD() --[[创建一个HUD]]
  4. local t = t or {0,0,0,0}
  5. local x=t[3]-t[1]+1
  6. local y=t[4]-t[2]+1
  7. if x==0 then x=1
  8. elseif y==0 then y=1 end --[[x,y除数不等于0]]
  9. local k=y/x --[[y=kx+b b=0 ]]
  10. local i,j = 0,0
  11. local Lx,Ly=t[1],t[2]
  12. if math.abs(x) > math.abs(y) then
  13. j = x
  14. if x < 0 then
  15. w = 0 - w
  16. end
  17. else
  18. j = y
  19. if y < 0 then
  20. w = 0 - w
  21. end
  22. end
  23. if i < j and w < 0 then --倒序遍历
  24. i,j = j,i
  25. elseif i > j and w > 0 then --正序遍历
  26. i,j = j,i
  27. end
  28. -- touchDown(1, Lx,Ly) --[[触摸按下]]
  29. showHUD(id,"",12,"0xffff0000","0xffffff00",0,Lx,Ly,20,20)
  30. mSleep(50)
  31. for p=i,j,w do
  32. if math.abs(x) > math.abs(y) then
  33. x1, y1 = p,math.floor(p*k)
  34. else
  35. x1, y1 = math.floor(p/k),p
  36. end
  37. --touchMove(1, x1+Lx, y1+Ly) --[[移动]]
  38. showHUD(id,"",12,"0xffff0000","0xffffff00",0,x1+Lx, y1+Ly,20,20)
  39. ptable({x1+Lx,y1+Ly})
  40. mSleep(20)
  41. end
  42. mSleep(50)
  43. --touchUp(1, x1+Lx, y1+Ly) --[[松开]]
  44. hideHUD(id) --隐藏HUD
  45. end
  46. slide_d({31,16,209,209},5)

协程:万向滑动 slide_w(num,num,num,src,num)付费vip免费

格式 : slide_w( 手指编号[1-10], x, y, “按下/移动/抬起”, 速率 )
适用场景 : 操控游戏摇杆/多指滑动
关联叉叉助手函数 : createHUD、showHUD、hideHUD、touchDown、touchMove、touchUp、mSleep

一个起点,多个终点,主要操控摇杆:
图2我们不但要能往前走,同时也要保证能往回走,算法正确,则能回到原点。
A星滑动.gif原路返回2.gif

  1. --调用方法:
  2. slide_w(1,300,460,"按下")
  3. slide_w(1,250,460,"移动",10)
  4. slide_w(1,350,460,"移动",10)
  5. slide_w(1,350,600,"移动",10)
  6. slide_w(1,100,800,"移动",10)
  7. slide_w(1,350,800,"抬起",10)

vip群公告获取源码密码

一次函数算法原理:
image.png
b为常数,设置b=0,则y=kx,k=y/x,x=y/k
求k值:
1、把起点(x,y)看做(0,0)
2、计算终点(x1,y1)与起点(x,y)之间的距离,则x = x1-x,y = y1-y,k = (y1-y)/(x1-x)

计算斜线坐标:
for 循环,遍历x或y其中一个方向。
|x| > |y| 时:取x和k值,计算y值的参数,则y=x*k
|x| < |y| 时:取y和k值,计算x值的参数,则x=y/k