VB定时器控件的应用实例与研究
2009-03-25赵俊峰
赵俊峰
[摘要] VB中的定时器控件具有灵活多变、易于控制等特点,在应用程序的开发中,利用VB定时器控件可以实现时间控制、随机控制、动画设计和游戏设计等制作。VB定时器控件和其他控件相结合,可以制作既灵活又实用的应用程序。
[关键词] VB 定时器 控制 Timer
VB中的定时器控件(Timer)是一个在程序运行时不可见的控件,在程序运行时,每隔若干时间(通过Interval属性设置)执行一次Timer事件中的相应代码。定时器控件最核心的属性是Enabled和Interval属性。利用Enabled可以设置定时器控件是否可用,其取值只有逻辑值True和False两种。利用Interval属性可以设置定时器控件激活Timer事件的时间间隔,其单位为毫秒,其取值范围为0-65535,当取值为0时,定时器控件不可用。由于定时器控件具有灵活多变、易于控制等特点,可以应用于时间控制、随机控制、动画制作、游戏制作等应用程序的开发中。
一、时间控制
1.整点播时器
在实际工作中,有时需要利用计算机实现整点报时的功能,以提醒用户及时知晓当前时间。整点播时器的功能是:若当前系统时间为整点时(即当前时刻的分钟数和秒数均为0),弹出对话框提示“现在是北京时间X点整”。在设计整点报时器时,定时器控件Timer1的Interval属性应设置为1000(1000毫秒=1秒),Timer1的timer事件代码如下:
Private Sub Timer1_Timer()
If Second(Time()) = 0 And Minute(Time()) = 0 Then
a = MsgBox("现在是北京时间" + Str(Hour(Time())) + "点整")
End If
End Sub
2.倒计时器
在实际生活中,有时需要通过倒计时的方法,让观众随时了解当前距正式活动(比赛)的时间差。比如奥运会倒计时、开幕式倒计时等等。倒计时器的功能是:先在文本框text1中输入倒计时的时间(形式为hh:mm:ss),当单击“开始倒计时”按钮command1时,每隔一秒钟,文本框text1中的时间倒退一秒钟,直到时间为0(00:00:00)时,弹出对话框提示“时间到!!!”。在窗体中应添加按钮控件(command1)、定时器控件(timer1)和文本框控件(text1)。定时器控件timer1的Interval属性应设置为1000,Enabled属性应设置为False。相关代码如下:
Public h, m, s, sum
Private Sub Command1_Click()
Timer1.Enabled = True
End Sub
Private Sub Timer1_Timer()
h = Val(Left(Text1.Text, 2))
m = Val(Mid(Text1.Text, 4, 2))
s = Val(Right(Text1.Text, 2))
sum = h * 3600 + m * 60 + s
sum = sum - 1
h = sum \ 3600
m = (sum Mod 3600) \ 60
s = sum Mod 60
h = IIf(h < 10, "0" + Trim(Str(h)), Trim(Str(h)))
m = IIf(m < 10, "0" + Trim(Str(m)), Trim(Str(m)))
s = IIf(s < 10, "0" + Trim(Str(s)), Trim(Str(s)))
Text1.Text = h + ":" + m + ":" + s
If sum = 0 Then
Timer1.Enabled = False
x = MsgBox("时间到!!!", "提示")
End If
End Sub
二、随机控制
1.摇奖器
摇奖器功能是根据摇奖规则,从规定的数字范围内随机的选出规定个数的随机号码。下面以体彩22选5为例介绍摇奖器的制作方法。单击命令按钮控件command1开始进行摇奖,标签控件Label1-Label5不断地随机显示抽取出的五个幸运号码,单击命令按钮command2实现抽奖。command1的Caption设置为“摇奖”, command2的Caption设置为“抽奖”,定时器控件Timer1的Interval属性值为10。相关代码如下:
Private Sub Command1_Click()
Timer1.Enabled = True
End Sub
Private Sub Command2_Click()
Timer1.Enabled = False
While Not (Label1.Caption <> Label2.Caption And Label1.Caption <> Label3.Caption And Label1.Caption <> Label4.Caption And Label1.Caption <> Label5.Caption And Label2.Caption <> Label3.Caption And Label2.Caption <> Label4.Caption And Label2.Caption <> Label5.Caption And Label3.Caption <> Label4.Caption And Label3.Caption <> Label5.Caption And Label4.Caption <> Label5.Caption And )
Label1.Caption = Int(Rnd() * 22+ 1)
Label2.Caption = Int(Rnd() * 22+ 1)
Label3.Caption = Int(Rnd() * 22+ 1)
Label4.Caption = Int(Rnd() * 22+ 1)
Label5.Caption = Int(Rnd() * 22+ 1)
Wend
End Sub
Private Sub Timer1_Timer()
Label1.Caption = Int(Rnd() * 22+ 1)
Label2.Caption = Int(Rnd() * 22+ 1)
Label3.Caption = Int(Rnd() * 22+ 1)
Label4.Caption = Int(Rnd() * 22+ 1)
Label5.Caption = Int(Rnd() * 22+ 1)
End Sub
其中,While Not (…) … Wend循环语句的目的是监测随机抽取的五个号码是否有重复值,如果有重复值则重新抽取,直到五个号码各不相同为止。
2.礼花绽放
礼花绽放的功能是随机地出现以窗体中心点为中心的随机颜色的线条,以模拟礼花绽放效果。只需在窗体中添加定时器控件Timer1,设置其Interval属性值为10,在定时器控件的Timer事件中利用窗体的line方法实现礼花绽放效果,相关代码如下:
Private Sub Timer1_Timer()
coulor = RGB(Rnd() * 255, Rnd() * 255, Rnd() * 255)
x = Rnd() * Form1.Width
y = Rnd() * Form1.Height
Form1.Line (Form1.Width/2, Form1.Height/2)-(x,y), coulor
End Sub
三、动画制作
1.进度条
在VB应用程序设计中,有时需要通过进度条动画来表达一些对象的操作进度,如安装进度、下载进度、完成进度等等。下图为“进度条制作”的运行界面。标签控件Label1用于显示进度比例,标签控件Label2用于显示标题“进度条的制作”,形状控件Shape2为进度框(其属性BackStyle的值为Transparent),形状控件Shape1为进度条(其属性Bordercolor的值&H00FF0000&,属性BackStyle的值为Opaque)。定时器控件的Interval属性值为10,其Timer事件代码如下:
Private Sub Timer1_Timer()
Shape1.Width = Shape1.Width + 10
Label1.Caption = Str(Int(Shape1.Width / Shape2.Width * 100)) + "%"
If Shape1.Width >= Shape2.Width Then
Timer1.Enabled = False
End If
End Sub
2.滚动字幕
在VB应用程序开发中,可以通过定时器控件(Timer)制作类似网页中滚动字幕的效果。利用VB可以制作从左往右、从右往左、交替三种方式的滚动字幕效果。下面以“交替”方式的滚动字幕为例介绍滚动字幕的制作方法。交替方式的滚动字幕就是字幕不断地来回滚动,文字碰到页面边界后就向相反方向滚动。在窗体中应添加标签控件(label1)和定时器控件(timer1)。设置标签控件label1的caption属性为“欢迎使用本软件”,设置定时器控件的Interval属性值为1。定义全局变量a以控制滚动的方向,相关代码如下:
Public a
Private Sub Timer1_Timer()
If a = 0 Then
Label1.Left = Label1.Left + 10
If Label1.Left >= Form1.Width - Label1.Width Then a = 1
End If
If a = 1 Then
Label1.Left = Label1.Left - 10
If Label1.Left <= 0 Then a = 0
End If
End Sub四、游戏制作
VB定时器控件和其他控件结合,可以制作简单的游戏。下面以“键盘输入测试”游戏为例进行介绍。此游戏的功能是:由应用程序随机抽取并显示10个字母,等待用户依次输入。当输入正确时,抽取并显示下一个随机字母。直到抽取十个字母,并均输入正确为止。最后弹出对话框,显示输入速度。此程序需要用到3个公共变量,变量a来记录随机抽取出的字母的ASCII值,变量s用来记录游戏开始时的系统时刻(通过s=timer(),使s赋值为从午夜算起已经过的秒数),变量n用来记录抽取字母的个数。通过窗体的KeyDown事件来记录并检测按键所对应的字母是否正确,如果正确,则设置定时器控件Timer1的Enabled属性值为True,即让定时器控件Timer1继续下一个随机字母的抽取和显示。定时器控件Timer1的Interval属性应设置为1。相关代码如下:
Public a, s, n
Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)
If KeyCode = a Then
Timer1.Enabled = True
p = 0
End If
End Sub
Private Sub Form_Load()
s = Timer()
End Sub
Private Sub Timer1_Timer()
Randomize
a = 65 + Int(Rnd() * 26)
Label1.Caption = Chr(a)
n = n + 1
Timer1.Enabled = False
If n = 10 Then
speed = Str(Int((Timer() - s) / 10 * 60))
MsgBox ("您的速度为" + speed + "字/分钟")
End If
End Sub
综上所述,VB定时器控件由于其具有功能灵活、易于控制、操作简单等优点,在软件开发中有着广泛的应用价值。利用VB定时器控件不仅可以实现程序控制和动画设计的功能,还可以实现简单游戏的制作。
参考文献:
[1]林信成等.Visual Basic 6入门经典[M].北京:中国电力出版社,1999,10.
[2]刘炳文.二级教程Visual Basic语言程序设计[M].北京:高等教育出版社,2001,10.
[3]邱玉辉.Visual Basic语言程序设计[M].昆明:云南科技出版社,2002,8.
本论文为太原大学外语师范学院“基于《计算机公共基础》的网络课程设计与研究”的课题成果。