学用VB控件编程(四)

软件世界

前面所提到的控件,基本上都是VB和Windows系统本身自带的,也许大家会问,VB还可以使用其他的控件吗?答案是肯定的。下面就以一个第三方控件为例,介绍一下怎么用它来编程。

制作简单的Flash播放器

时下,Flash(闪客)作品可谓铺天盖地,Flash播放器多种多样,你是否对这些播放器感兴趣,自己制作一个播放器又感到束手无策呢?看完这篇文章后,你将会得到答案。
要使用Flash控件,首先安装有Flash程序,我使用的是Flash5.0,程序安装时,会自动安装Shockwave Flash控件。引入工具箱,双击控件引放窗体。使用该控件,必须掌握它的属性、方法和事件。
打开对象浏览器,查找Shockwave Flash控件,通过对象浏览器研究它的属性等。
在成员格中我们可以看到Flash控件所提供的属性、方法和事件,结合在IDE集成窗口中的属性窗,经过摸索,总结了该控件以下一些属性、方法和事件。

属性:

AlignMode对齐方式,在属性窗中该属性改变会引起属性Salign的改变,两者作用一样,属性值有:1:左对齐(L):2:右对齐(R):4:项对齐(T):8:底对齐(B)
BackgroundColor 背景色。
FrameNum 动画当前的帧值。
Loop 布尔值,为True时动画循环播放。
Movie 播放Flsah的路径全名,如果是网络上的Flash,该值为动画的URL全名。
Playing 状态,布尔值,为True时说明Flash正在播放。
Quality 画面质量,有四个值,0:低质量,但速度快,1:高质量,速度慢,2:侧重于速度,3:侧重于质量。
TotalFrames Flash总帧数。

方法:

Back 后退一帧,与方法Forward相对应,后者是前进一帧。
Play 播放。
Stop 停止播放,相当于暂停,按play后继续播放。

事件:

OnReadyStateChange 控件准备状态,返回个参数newState,有几个值,含义不同。
0:正在载入,1:未初始化,2:已载入,3:正在交互,4:完成。
Flash控件还有许多属性、方法、事件,大家可以在编程中慢慢熟悉。
播放器要求:能够播放本地Flash和网络Flash,能够随时停止播放快进后退,显示当前状态,提供循环播放。
根据要求,设计窗体如(图1)所示。

图1
图1

程序使用单选按钮控件数组来选定画面质量,两个复选框作为播放条件,两个label为显示状态,五个操作按钮和一个时钟控件,一个对话框控件。当用户选择网络Flash时,会弹出一个inputbox输入框,输入URL,否则会弹出对话框选择本地文件。

源程序如下:

Private Sub Check1_Click()
If Check1.Value = 1 Then
Flash1.Loop = True
Else
Flash1.Loop = False
End If
End Sub
Private Sub Command1_Click()
Dim url As String
If Check2.Value = 1 Then
url = InputBox("Flash网址", "请输入网址")
Flash1.Movie = url
Else
With CommonDialog1
.Filter = "FLASH|*.swf"
.ShowOpen
url = .FileName
End With
End If
If url <> "" Then
Flash1.Movie = url
Else
MsgBox "请选择文件或网址"
End If
End Sub
Private Sub Command2_Click()
Flash1.Play
Timer1.Enabled = True
End Sub
Private Sub Command3_Click()
Flash1.StopPlay
Timer1.Enabled = False
End Sub
Private Sub Command4_Click()
Flash1.Forward
Flash1.Play
End Sub
Private Sub Command5_Click()
Flash1.Back
Flash1.Play
End Sub
Private Sub Flash1_OnReadyStateChange(newState As Long)
Select Case newState
Case 0
Label1.Caption = "正在载入...!"
Case 1
Label1.Caption = "还未初始化!"
Case 2
Label1.Caption = "已载入!"
Case 3
Label1.Caption = "正在交互!"
Case 4
Label1.Caption = "影片载入完成!共有" & Flash1.TotalFrames & "帧"
Timer1.Enabled = True
End Select
End Sub
Private Sub Form_Load()
Flash1.Loop = True
Check1.Value = 1
Option1.Item(Flash1.Quality).Value = 1
End Sub
Private Sub Option1_Click(Index As Integer)
Flash1.Quality = Index
End Sub
Private Sub Timer1_Timer()
If Flash1.Playing Then
Label2.Caption = "正在播放第" & Flash1.FrameNum & "帧"
Else
Label2.Caption = ""
End If
End Sub