将Slider1的SelectRanger的属性设置为“True”,SmallChange属性和LargeChange属性设置为10,TickFrequengcy属性设置为20,TextPosition设置为“1-SldBelowRight”。
将Label(1-3)分别放在Slider1下的左端、中间和右端。其中,Label1的Caption设置为“0帧”,Label2和Label3的Caption设置为空字符串。
6 个CommandButton的“名称”属性分别为:cmdOpen、cmdPlay、cmdPause、cmdPre、cmdPreFrame、 cmdNextFrame、cmdNext、cmdExit,“Caption”属性分别为:打开、播放、暂停、上一个、上一帧、下一帧、下一个、退出。 在 StatusBar上单击鼠标右键,选择“属性”,从弹出的窗口中选择“窗格”页面,用鼠标点击“插入窗格”5次,在索引1-5中分别设置“文本”属性 为:“共打开了0个文件”、“状态:”、“等待”、“帧数:”、“0”,再适当设置每一项的“最小宽度”的属性(可参考图1中的比例)。 进 入菜单编辑器(按快捷键Ctrl+E)。设置第一个菜单标题为“显示控制”,名称为:mnuDisplay;在“显示控制”下设立子菜单标题分别为“全部 显示”、“随窗口大小变化”、“缩放至窗口大小”,名称分别为:mnuDisplay0、mnuDisplay1、mnuDisplay2。设置第二个菜 单标题为“质量控制”,名称为:mnuQuality;在“质量控制”下设立子菜单标题分别为“低分辨率”、“高分辨率”,名称分别 为:mnuQuality0、mnuQuality1。设置第三个菜单标题为“播放控制”,名称为:mnuPlayControl;在“播放控制”下设立 子菜单标题分别为“循环播放”、“放大画面”、“缩小画面”,名称分别为:mnuLoopPlay、mnuZoomIn、mnuZoomOut。 选择“工程”菜单下的“添加窗体”命令,新增一个窗体Form2作为播放窗口。在Form2上加入1个ShockwaveFlash控件和1个Timer控件。将Timer1控件的“Interval”属性设置为“20”。
最后,对各窗体、控件的大小、位置进行适当的调整,其大小、位置可参考图1。 2、程序代码
第一步:在Form1的代码窗口中添加以下代码:
DimFileNames()AsString注释:用于保存打开的文件名称。 DimPlayFileNumAsInteger注释:用于计算正在播放的文件序号。 DimTotalFileAsInteger注释:用于统计打开的文件总数。 PrivateSubcmdOpen_Click()注释:打开 OnErrorGoToExitOpen
CommonDialog1.Flags=cdlOFNAllowMultiselectOrcdlOFNFileMustExistOrcdlOFNExplorer
CommonDialog1.FileName=〃\
CommonDialog1.ShowOpen注释:显示“打开”对话框。
注释:以vbNullChar作为子字符串的边界分隔字符串CommonDialog1返回的FileName。
FileNames()=Split(CommonDialog1.FileName,vbNullChar) IfUBound(FileNames)=0Then注释:用户只打开了一个文件。 Form2!ShockwaveFlash1.Movie=FileNames(0) TotalFile=1 PlayFileNum=0
Else注释:用户打开了多于一个文件。
Form2!ShockwaveFlash1.Movie=FileNames(0)+〃\\〃+FileNames(1) TotalFile=UBound(FileNames) PlayFileNum=1 EndIf
StatusBar1.Panels(1).Text=〃共打开了〃+Trim(Str(TotalFile))+〃个文件〃 cmdPlay_Click ExitOpen: EndSub
PrivateSubcmdPlay_Click()注释:开始播放
IfTotalFile<1ThenExitSub注释:用户还没有打开文件。 注释:显示Form2开始播放动画。
Form2.Caption=FileNames(PlayFileNum)+〃-Flash动画播放器〃 Form2.Show
Form2!ShockwaveFlash1.Playing=True IfTotalFile=1ThenPlayFileNum=0 注释:显示状态条的信息。
StatusBar1.Panels(3).Text=〃正在播放文件:〃+FileNames(PlayFileNum)+〃...〃
注释:显示滑动条的状态。
Slider1.Max=Form2!ShockwaveFlash1.TotalFrames Label2.Caption=Str(Slider1.Max/2)+〃帧〃 Label3.Caption=Str(Slider1.Max)+〃帧〃
EndSub
PrivateSubcmdPause_Click()注释:暂停播放 Form2!ShockwaveFlash1.Stop EndSub
PrivateSubcmdPre_Click()注释:播放上一个文件 IfTotalFile<>1Then注释:当用户打开多于一个文件时 PlayFileNum=PlayFileNum-1
IfPlayFileNum<1ThenPlayFileNum=TotalFile Form2!ShockwaveFlash1.Movie=FileNames(0)FileNames(PlayFileNum) EndIf
注释:显示播放状态的信息。
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)+〃帧〃 EndSub
PrivateSubcmdNext_Click()注释:播放下一个文件 IfTotalFile<>1Then注释:用户打开多于一个文件时 PlayFileNum=PlayFileNum+1
IfPlayFileNum>TotalFileThenPlayFileNum=1 Form2!ShockwaveFlash1.Movie=FileNames(0)FileNames(PlayFileNum) EndIf
注释:显示播放状态的信息。
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)+〃帧〃 EndSub
PrivateSubcmdPreFrame_Click()注释:跳到动画的上一帧 Form2!ShockwaveFlash1.Back EndSub
PrivateSubcmdNextFrame_Click()注释:跳到动画的下一帧 Form2!ShockwaveFlash1.Forward EndSub
PrivateSubcmdExit_Click()注释:退出程序 End EndSub
PrivateSubSlider1_Scroll()
注释:当用户拖动滑动条时,将播放帧数设置为滑动条中的值。 Form2!ShockwaveFlash1.FrameNum=Slider1.Value EndSub
PrivateSubmnuDisplay0_Click()
注释:将画面大小设置为在控件内保持动画原来比例全部显示 Form2!ShockwaveFlash1.ScaleMode=0 mnuDisplay0.Checked=True mnuDisplay1.Checked=False mnuDisplay2.Checked=False EndSub
PrivateSubmnuDisplay1_Click()
注释:将画面的缩放设置为随控件横向(或纵向)的缩放而变化 Form2!ShockwaveFlash1.ScaleMode=1 mnuDisplay0.Checked=False mnuDisplay1.Checked=True
mnuDisplay2.Checked=False EndSub
PrivateSubmnuDisplay2_Click()
注释:将画面大小设置为不理会动画原来比例缩放至控件大小 Form2!ShockwaveFlash1.ScaleMode=2 mnuDisplay0.Checked=False mnuDisplay1.Checked=False mnuDisplay2.Checked=True EndSub
PrivateSubmnuLoopPlay_Click()
注释:将播放方式设置为循环或不循环。
mnuLoopPlay.Checked=NotmnuLoopPlay.Checked
Form2!ShockwaveFlash1.Loop=NotForm2!ShockwaveFlash1.Loop EndSub
PrivateSubmnuQuality0_Click() 注释:将画面质量设置为低分辨率 Form2!ShockwaveFlash1.Quality=0 mnuQuality0.Checked=True mnuQuality1.Checked=False EndSub
PrivateSubmnuQuality1_Click() 注释:将画面质量设置为高分辨率 Form2!ShockwaveFlash1.Quality=1 mnuQuality0.Checked=False mnuQuality1.Checked=True EndSub
PrivateSubmnuZoomIn_Click() 注释:放大画面。
Form2!ShockwaveFlash1.Zoom(50)