|
发表于 2011-11-20 19:11:33
|
显示全部楼层
山东省淄博市
这个问题叫鼠标飘逸 很老的话题了 按键精灵网站有解答
下面是源代码:
调用例子
w=235:z=140
Gosub 防飘
EndScript
Sub 防飘
dim n,h //定义变量
n=1 //n的作用是当误差小于多少时就算是到目标点了 ,这里选择的是1 你也可以写成2 数字越大误差越大!
h=0
zx=w //w和z的作用是 把要去的目标点的横坐标和纵坐标的值带如防飘子程序
zy=z
If zx<50 or zx>540 //限制鼠标,不要移动到窗口外,意思是当鼠标要去的位置小于50或大于540 就现在鼠标的移动
If zx<50 //如果小于50就让鼠标的横坐标加40 这样鼠标就不会从左边飞出去了
zzx=zx+40
EndIf
If zx>540 //如果大于540 就让鼠标横坐标减去40 这样鼠标就不会从右边飞出去了
zzx=zx-40
EndIf
Else
zzx=zx //如果不小于50也不大于540 就是说鼠标要去的地方不是在窗口边缘的位置,也就不会飞出去 所以不需要限制!
EndIf
If zy<50 or zy>400 //纵坐标同理可证
If zy<50
zzy=zy+40
EndIf
If zy>400
zzy=zy-40
EndIf
Else
zzy=zy
EndIf
MoveTo zzx zzy //这个时候移动的鼠标就是经过限制的鼠标了 一般情况下是飞不出去的,
Delay 100 //移动后 要加些延时,最少不要小于100
Rem py //做一个标记py,留在后面反复判断误差的时候用
mz=0
VBSCall FindPic(0,0,650,500,"Attachment:\鼠标.bmp",0.7,x1,y1) //找鼠标图片得到鼠标的位置
If x1>=0 and y1>=0
a=zx-x1+18 // 计算横坐标误差
b=zy-y1+12 //计算纵坐标误差
Else
VBSCall FindPic(0,0,650,500,"Attachment:\剑.bmp",0.7,x1,y1) //只有战斗的时候才会用的剑的形式
If x1>=0 and y1>=0
a=zx-x1+12
b=zy-y1+12
Else
mz=1 //如果出现意外情况 鼠标飘出去了 就靠这个mz 变量让他回来
MoveTo zzx zzy //如果没找到鼠标的图片 这从新移动经过限制的坐标!
Delay 100
EndIf
EndIf
If h=6 //意思就是如果循环六次都没找到鼠标,鼠标有可能飘出去了
MoveTo 300 300 //这个时候把鼠标从新 移动的300,300的位置
Delay 500
h=0
Goto py
EndIf
If mz=1 //如果没找到鼠标
h=h+1 //配合mz使用
Goto py
Else
If Abs(a)>n or Abs(b)>n //根据计算出的误差值,做相对移动
MoveR a,b //a,b里面保存的就是误差值
Delay 100
h=h+1
Goto py
EndIf
EndIf
Return 防飘
|
|