四、使用Image实现动画效果
该功能用定时器控件来控制移动和地球转动的速度,当然,其速度还与程序中设定的步长有关系,具体程序片段如下:
Private Sub Form_Load() Timer_animate.inteval=100 ’INTEVAL属性为100ms Timer_animate.enabled=true ’启动动画定时器 End Sub Private Sub Timer_animate_Timer() Call ani_Image ’定时调移动子程序 End Sub Sub IncrFrame() FrameNum = FrameNum + 1 ’帧加1 If FrameNum > 5 Then ’最后一帧图像显示之后返回第一帧 FrameNum = 1 End If Imageearth(0).Picture = Imageearth(FrameNum).Picture ’将该帧图像赋给运动的Imageearth(0)控件的Picture属性 End Sub Sub ani_Image() ’控制移动子程序 Select Case Motion ’控制移动方向的变量 Case 1 ’向上和向左移动,步长50 twips Imageearth(0).Move Imageearth(0). Left - 50, Imageearth(0).Top - 50 IncrFrame ’切换到下一幅图 If Imageearth(0).Left < = 0 Then ’向左移动到了边界 Motion = 2 向上和向右移动 ElseIf Imageearth(0).Top < = 0 Then Motion = 4 向上移动到了边界,改向下和向左移动 End If Case 2 向右和向上 Imageearth(0).Move Imageearth(0).Left + 50, Imageearth(0).Top - 50 IncrFrame ’到了右边界,转为向左和向上 If Imageearth(0).Left >= (startform.Width - Imageearth(0).Width) Then Motion = 1 ElseIf Imageearth(0).Top < = 0 Then Motion = 3 ’向右向下 End If Case 3 ’向右向下 Imageearth(0).Move Imageearth(0).Left + 50, Imageearth(0).Top + 50 IncrFrame If Imageearth(0).Left >= (startform.Width - Imageearth(0).Width) Then Motion = 4 ’向左向下 ElseIf Imageearth(0).Top >= (startform.Height - Imageearth(0).Height) - 680 Then Motion = 2 ’向右向上,其中680 twips是标题和菜单的高度 End If Case 4 ’向左向下 Imageearth(0).Move Imageearth(0).Left - 50,Imageearth(0).Top + 50 IncrFrame If Imageearth(0).Left < = 0 Then ’是否到了左边界,如到了转向右向下 Motion = 3 ’是否到了下边界 ElseIf Imageearth(0).Top >= (startform.Height - Imageearth(0).Height) - 680 Then Motion = 1 ’向左向上 End If End Select End Sub