一、循环结构
循环结构可以减少脚本重复编辑的工作量,循环是指在特定的条件下多次反复执行一组语句,这是最能发挥脚本特长(重复执行)的结构,被重复执行的一组语句称为循环体。
例如:统计一个用户到目前为止已经敲击了多少下键盘,每个键各是多少等。
在按键中主要的循环语句有For ...Next/Do ...Loop/While...Wend,退出循环语句Exit。最常用的是For...Next语句。
二、FOR...Next循环语句
For...Next是按指定的次数执行循环体,在按键中For最典型的写法是For 循环次数。
For 3
TracePrint 1
Next
这样子的语句在实际执行过程当中循环体里面的TracePrint会被执行3遍,这在调试状态下可以很明显地看到输出3个1。
另外一种写法则是要设置循环的开始、结尾还有步长。如上面的例子可以改写为:
For i=1 To 3 Step 1
TracePrint 1
Next
运行一次,我们发现结果都是一样的,依然是输出3个1。这是为什么呢?
从For i=1 To 3 Step 1,这一句可以简单地理解成 设置i=1 到 3 步长为1。这样子理解的话,我们就会发现,从1到3每次加1。那么加3次刚好到3,于是结束循环。此外若步长值为1,则Step 1可以省略。
三、Do...Loop循环语句
Do...Loop有两种格式:前测型循环结构和后测型循环结构。两者区别在于判断条件的先后次序不同。
格式:
Do {While|Until}
循环体
Loop
Do While...Loop语句的功能:当条件成立时,执行循环体。当条件不成立时,终止循环。
示例:
a=1
Do While a = 1
MessageBox 1
Loop
这个例子,当a=1时就会进入这个循环一直执行。当把a的值改成0的时候,这个时候在刚开始的判断时就已经不成立,所以脚本直接跳到Loop后面继续执行。
Do Until...Loop(直到型循环)语句的功能:当条件不成立时,执行循环体,直到条件成立是,终止循环。
示例:
a=0
Do Until a = 1
MessageBox 1
Loop
而Do Until 刚好有Do While相反,当a不等于1时脚本会一直执行循环体里面的内容,直到a=1为止。
四、While...Wend循环结构
我们在前面已经看到了Do While...Loop了,而While...Wend的执行顺序刚好跟Do While...Loop的顺序和条件是一样的。
a=1
While a = 1
MessageBox 1
Wend
金猪脚本(原飞猪脚本)以按键精灵教学为主,涉及UiBot,Python,Lua等脚本编程语言,教学包括全自动办公脚本,游戏辅助脚本,引流脚本,网页脚本,安卓脚本,IOS脚本,注册脚本,点赞脚本,阅读脚本以及网赚脚本等各个领域。想制作脚本和学习按键精灵的朋友可以添加按键精灵学习交流群:554127455 学习路上不再孤单,金猪脚本伴你一同成长.
一、定时器介绍
定时器控件(Timer)是指在设定的时间间隔反复指定的事件。它可以设置的时间间隔在(1-2147483647)毫秒之间。这里所指的时间间隔是指上一个事件成功执行结束到下一个事件开始的间隔。所以不会出现同一个定时器事件同时执行的情况。
二、定时器属性
定时器控件总共有6个属性,包含2个基本属性、3个位置属性和1个其他属性。
基本属性分别是:名称(Name)、有效(Visable)。
位置属性:左边(Left)、上边(Top)、显示顺序(ZOrder)。
其他属性:时间间隔(Interval)。
三、定时器的几个注意事项
在介绍定时器如何使用前先看一下定时器的属性。它跟其他控件所不同,大多数控件的位置属性都有“右边”、“下边”、“长度”、“宽度”这4个属性。那定时器为什么没有?
首先,定时器设计的初衷是为了在设定的时间间隔内反复触发指定的事件。所以定时器控件的大小被设计为固定的(24*24)大小并且没有“右边”、“下边”、“长度”、“宽度”,并且在运行阶段定时器是隐藏的。所以,它的显示顺序属性只在设计阶段有效。
然后,“时间间隔”这个属性的单位是“毫秒”,它的取值范围是[0-2147483647]。这里需要特别说明的是,当值为0时相当于设置该定时器无效,即默认不执行定时器里面的事件。如果要让定时器默认执行里面的事件,时间间隔必须是[1-2147483647]。
那,在实际当中如何使用定时器控件?
四、定时器的使用
从以上的几个注意事项我们已经基本了解定时器的特点了。我们先在界面上创建一个定时器控件,由于它在运行时隐藏的特点,所以位置可以可以任意,但是为了在设计阶段更好地区分每一种控件,建议单独放在某一排或者把显示顺序调低,隐藏在某个控件之下。
这里,默认创建一个时间控件(Timer1)。为了体现出它的效果,再创建一个标签(Label),然后在定时器里面计数,然后通过标签,实时修改标签的标题。
双击定时器,然后编辑事件里面的代码。
Event Form1.Timer1.Timer
Form1.Label1.Caption=i
i=i+1
End Event
脚本事件编辑完成后,进入界面看一下。标签的内容前后没有任何变化。
这是什么原因?其实这是因为默认创建时定时器的时间间隔是0,所以默认是不会执行的。我们再把时间间隔修改为1000。这时再进入调试,打开界面。
这时就可以看到标签的内容平均每秒都加1了。这样子就可以做一个计数器了,或者定时执行做某一件事情。但有一点需要特别注意,在定时器里面不要写延时(Delay),当执行到延时的时时候,界面就会无响应,等到这个延时过去才会恢复。
除了这个,能否灵活控制定时器的事件触发和中止?
五、脚本事件控制
有的朋友可能会很奇怪,为什么在属性栏上没有看到有事件?
其实,定时器的事件的启动都是通过设置定时器的时间间隔属性来完成的。
现在,创建两个按钮,分别命名为“启动”、“中止”。在启动按钮的事件里面控制定时器事件的启动,在中止按钮事件里面控件定时器的中止。
Event Form1.StopTimer.Click
Form1.Timer1.Interval=0
End Event
Event Form1.Start.Click
Form1.Timer1.Interval=1000
End Event
在进入调试前要先记住把定时器的时间间隔设置为0,不然打开界面的时候就会运行这个事件了。
进入调试,打开界面,点击启动,这时就会启动计数器了。
最后,除了设置定时器的时间间隔以外,是否有效则是整个定时器的总开头。如果设置这个定时器为不可用状态,那么设置它的时间间隔也就无效了。