本帖最后由 民工唐子 于 2015-8-3 07:44 编辑
我也用了下,发现有偏移.经过思考,跟另外一个人的轨迹鼠标做了对比,发现最后需要修正一下.我把你的代码翻译成中文了,便于英文不灵光的人看....我也是不灵光的人{:soso_e117:}.贴上我的代码!没有测试过哦.有心人测试了,反馈下!谢谢!- 功能 鼠标轨迹移动(x,y,对象)//模拟轨迹
- 变量 当前坐标X,当前坐标Y,目标坐标x,目标坐标y,坐标距离X长度,坐标距离Y长度,实际直线长度,移动一次的长度,XCount,YCount,LoopRec,移动次数// 当前坐标,目标坐标,坐标距离,总坐标数,步进,X Y坐标数 循环记数
- 变量 轨迹目标坐标x,轨迹目标坐标y
-
- 目标坐标x = x
- 目标坐标y = y
- 对象.GetCursorPos(当前坐标X,当前坐标Y) //获取当前鼠标的坐标
- 坐标距离X长度 = 数学绝对值(目标坐标x - 当前坐标X)
- 坐标距离Y长度 = 数学绝对值(目标坐标y - 当前坐标Y)
- 实际直线长度 = 数学开方(坐标距离X长度*坐标距离X长度 + 坐标距离Y长度*坐标距离Y长度)
-
- 移动次数 = 转整型(实际直线长度/10) //每次移动10个像素,计算总共需要移动多少次.
- 调试输出("移动次数"&移动次数)
- //移动次数越大,移动一次的长度就越短
- 如果(移动次数 < 10) //如果总共移动的次数少于5,则赋值至少移动5次
- 移动次数 = 10
- 结束
- 移动一次的长度 = 转整型(实际直线长度/移动次数)//步进值
- 调试输出("移动一次的长度"&移动一次的长度)
- XCount = 转整型((目标坐标x - 当前坐标X)/移动一次的长度)
- YCount = 转整型((目标坐标y - 当前坐标Y)/移动一次的长度)
- 遍历(变量 i=0;i < 实际直线长度-1;i = i + 实际直线长度/移动一次的长度) //减少一步,后面做最后的修正,防止鼠标偏移
- LoopRec = LoopRec + 1 //LoopRec初始值为0
-
- 轨迹目标坐标x = 当前坐标X+XCount*LoopRec
-
- 轨迹目标坐标y = 当前坐标Y+YCount*LoopRec
-
- 如果(目标坐标x < 0 && 目标坐标y < 0)
- 调试输出("在这里1")
- 对象.MoveTo(轨迹目标坐标x,轨迹目标坐标y)
- 否则
- 调试输出("在这里2")
- 对象.MoveTo(轨迹目标坐标x,轨迹目标坐标y)
-
- 结束
- 等待(5)
- 结束
- 等待(50)
- //最后的修正,防止鼠标偏移//非常有必要!
- 对象.MoveTo(目标坐标x,目标坐标y)//最后的修正,防止鼠标偏移
- 结束
复制代码 |