第五天、Flash动画播放器
小蘑菇:叮当姐姐,上次你教我做媒体播放器之后不是让我自己做一个Flash动画的播放器吗?但是我始终没有搞定,还是你来帮帮忙吧。
小叮当:咦,现在怎么变得谦虚起来了?既然是这样,就由我出马搞定吧。
一、准备工作
小叮当:制作Flash动画播放器的时候需要调用一个Flash控件---Swflash.ocx,这个控件可以通过安装Flash,或者通过安装Windows 98自带的Flash插件来搞定。比如采取后一种方法,只要在控制面板中选择“添加/删除程序”图标,进入“Windows 安装程序”界面之后在“多媒体”一项中点选“Macromedia Shockwave Flash”前的复选框确定即可。
小蘑菇:不用这么麻烦吧,其实我的计算机中已经安装过Flash了,还用它制作过一些动画呢。
小叮当:切,你不早说?浪费我这么多口水。不过即使已经安装了Flash,也要用鼠标右击工具箱,并在弹出的部件添加窗口中选把Shockwave flash、MICroSOFt Common Dialog Control 6.0 (SP3)和Microsoft Windows Common Control 6.0 (SP3)这三个控件添加到工具箱中。完成这一步设置后,就可以开始制作Flash动画播放器了。
二、制作Flash播放器
小叮当:咱们制作的这个Flash动画播放器要能够一次打开多个Flash动画文件,可以在播放过程中选择播放打开的文件、随时改变播放质量、画面大小等状态,而且在播放过程中可以随时对播放的当前帧数进行调整或者手动进行逐帧播放,在状态栏里有当前播放状态的相关说明等等。下面先来添加程序所需要的控件。
1、新建一个工程,将Form1的Caption属性设置为“小叮当的Flash动画播放器”。
2、在Form1窗口中添加一个CommonDialog控件,将CommonDialog1控件的CANcelError设置为“True”,DialogTitle设置为“打开Flash动画文件”,FiLTEr属性设置为“Flash动画(*.swf)|*.swf|”,FilterIndex设置为“1”,MaxFileSize设置为“10240”。
3、在Form1窗口中添加一个Slider控件,将Slider1的SeleCTRanger的属性设置为“True”,SmallChange属性和LargeChange属性均设置为“10”,TickFrequengcy属性设置为“20”,TextPosition设置为“1-SldBelowRight”。
4、在Form1窗口中添加3个Label控件,并将Label1的Caption设置为“0帧”,Label2和Label3的Caption设置为空字符串。
5、在Form1窗口中添加8个CommandButton控件,将它们的名称属性分别设置为“cmdOpen”、“cmdPlay”、“cmdPause”、“cmdPre”、“cmdPreFrame”、“cmdNextFrame”、“cmdNext”和“cmdExit”,Caption属性分别设置为“打开”、“播放”、“暂停”、“上一个”、“上一帧”、“下一帧”、“下一个”和“退出”。
6、在Form1窗口中添加一个Status Bar控件,在这个控件上单击鼠标右键并选择“属性”命令,从弹出的窗口中选择“窗格”标签,用鼠标点击“插入窗格”5次表示插入5个状态窗格,在索引1-5中分别设置“文本”属性分别为“共打开了0个文件”、“状态:”、“等待”、“帧数:”、“0”。
7、接着按下“Ctrl+E”的组合按键进入菜单编辑器,设置第一个菜单标题为“显示控制”,名称为mnuDisplay。在“显示控制”菜单下分别设立“全部显示”、“随窗口大小变化”和“缩放至窗口大小”子菜单标题,名称分别为:mnuDisplay0、mnuDisplay1和mnuDisplay2。设置第二个菜单标题为“质量控制”,名称为mnuQuality。在“质量控制”菜单下分别设立“低分辨率”和“高分辨率”的子菜单,名称分别为mnuQuality0和mnuQuality1。设置第三个菜单标题为“播放控制”,名称为mnuPlayControl。在“播放控制”菜单下分别设立“循环播放”、“放大画面”和“缩小画面”子菜单,名称分别为mnuLoopPlay、mnuZoomIn和mnuZoomOut。
8、选择“工程”菜单下的“添加窗体”命令,新增一个窗口Form2作为播放窗口。在Form2上加入1个ShockwaveFlash控件和1个Timer控件,将Timer1控件的Interval属性设置为“20”。
最后,对各窗体、控件的大小和位置进行适当的调整,
小蘑菇:乖乖,看来这次是玩真的了,又是控件又是菜单,还有一个播放窗口,厉害。
小叮当:下面就来针对Form1进行代码添加。
1、双击Form1窗口,并选择“通用”对象,输入下面的通用代码:
Dim FileNames() As String /用于保存打开的文件名称
Dim PlayFileNum As Integer /用于计算正在播放的文件序号
Dim TotalFile As Integer /用于统计打开的文件总数
2、双击“打开”按钮并输入下列代码:
Private Sub cmdOpen_Click()
On Error GoTo ExitOpen
CommonDialog1.Flags = cdlOFNAllowMultiselect Or cdlOFNFileMustExist Or cdlOFNExplorer
CommonDialog1.FileName = " "
CommonDialog1.ShowOpen /显示“打开”对话框。
FileNames() = Split(CommonDialog1.FileName, vbNullChar) /以vbNullChar作为子字符串的边界分隔字符串CommonDialog1返回的FileName
If UBound(FileNames) = 0 Then /只打开了一个文件
Form2!ShockwaveFlash1.Movie = FileNames(0)
TotalFile = 1
PlayFileNum = 0
Else /打开了多于一个文件
Form2!ShockwaveFlash1.Movie = FileNames(0) + ″\″ + FileNames(1)
TotalFile = UBound(FileNames)
PlayFileNum = 1
End If
StatusBar1.Panels(1).Text = ″共打开了″ + Trim(Str(TotalFile)) + ″个文件″
cmdPlay_Click
ExitOpen:
End Sub
3、双击“播放”按钮并输入下列代码:
Private Sub cmdPlay_Click()
If TotalFile < 1 Then Exit Sub /还没有打开文件。
Form2.Caption = FileNames(PlayFileNum) + "- 小叮当的Flash动画播放器" /显示Form2开始播放动画
Form2.Show
Form2!ShockwaveFlash1.Playing = True
If TotalFile = 1 Then PlayFileNum = 0
StatusBar1.Panels(3).Text = "正在播放文件:" + FileNames(PlayFileNum) + " …" /显示状态条的信息
Slider1.Max = Form2!ShockwaveFlash1.TotalFrames /显示滑动条的状态
Label2.Caption = Str(Slider1.Max / 2) + "帧"
Label3.Caption = Str(Slider1.Max) + "帧"
End Sub
4、双击“暂停”按钮并输入下列代码:
Private Sub cmdPause_Click()
Form2!ShockwaveFlash1.Stop
End Sub
5、双击“上一个”按钮并输入下列代码:
Private Sub cmdPre_Click()
If TotalFile <> 1 Then /打开多个文件时
PlayFileNum = PlayFileNum - 1
If PlayFileNum < 1 Then PlayFileNum = TotalFile
Form2!ShockwaveFlash1.Movie = FileNames(0) + "\" + FileNames(PlayFileNum)
End If
StatusBar1.Panels(3).Text = "正在播放文件:" + FileNames(PlayFileNum) + "…" /显示播放状态的信息
Slider1.Max = Form2!ShockwaveFlash1.TotalFrames
Form2.Caption = FileNames(PlayFileNum) + "- 小叮当的Flash动画播放器"
Label2.Caption = Str(Slider1.Max / 2) + "帧"
Label3.Caption = Str(Slider1.Max) + "帧"
End Sub
6、双击“下一个”按钮并输入下列代码:
Private Sub cmdNext_Click()
If TotalFile <> 1 Then /打开多于一个文件时
PlayFileNum = PlayFileNum + 1
If PlayFileNum>TotalFile Then PlayFileNum = 1
Form2!ShockwaveFlash1.Movie = FileNames(0) + "\" + FileNames(PlayFileNum)
End If
StatusBar1.Panels(3).Text = "正在播放文件:" + FileNames(PlayFileNum) + " …" /显示播放状态的信息
Slider1.Max = Form2!ShockwaveFlash1.TotalFrames
Form2.Caption = FileNames(PlayFileNum) + "- 小叮当的Flash动画播放器"
Label2.Caption = Str(Slider1.Max / 2) + "帧"
Label3.Caption = Str(Slider1.Max) + "帧"
End Sub
7、双击“上一帧”按钮并输入下列代码:
Private Sub cmdPreFrame_Click()
Form2!ShockwaveFlash1.Back /跳到动画的上一帧
End Sub
8、双击“下一帧”按钮并输入下列代码:
Private Sub cmdNextFrame_Click()
Form2!ShockwaveFlash1.Forward /跳到动画的下一帧
End Sub
9、双击“退出”按钮并输入下列代码:
Private Sub cmdExit_Click()
End
End Sub
10、在Form1窗口中选择“Slider1”对象的“Scroll”事件,并输入下面的通用代码:
Private Sub Slider1_Scroll()
Form2!ShockwaveFlash1.FrameNum = Slider1.Value /当用户拖动滑动条时,将播放帧数设置为滑动条中的值