如何用VB编写FLASH动画播放器
?用VB編寫FLASH動畫播放器
????
?????
? Flash4是MacroMedia公司出品的矢量動畫創(chuàng)作專業(yè)軟件,利用該軟件制作的矢量動畫具有文件體積小、帶音效和兼容性好等特點。那么,你想不想在自己編寫的程序中加入Flash動畫,為自己的程序添加一道亮麗的色彩呢? ? ?
? 一、編程原理 ? ?
? 本程序利用了Flash4本身自帶播放Flash動畫的控件Swflash.ocx。你可以通過以下途徑獲得該控件:1、安裝Flash4;2、安裝Windows98自帶的Flash插件,方法:依次單擊“開始”菜單-“設(shè)置”-“控制面板”-“添加/刪除程序”-“Windows ? 安裝程序”-“多媒體”-“詳細資料”-選中“Macromedia ? Shockwave ? Flash”前的復(fù)選框確定即可。以上方法都會將該控件安裝到Windows目錄下的System/Macromed/Flash子目錄下。 ? ?
? 二、示例程序 ? ?
? 下面就是一個用Swflash.ocx控件編寫的Flash動畫播放器。本程序可一次打開多個Flash動畫文件,并可在播放過程中選擇播放打開的文件、隨時改變播放質(zhì)量、畫面大小等狀態(tài);在播放過程中可以隨時對播放的當(dāng)前幀數(shù)進行調(diào)整或者手動進行逐幀播放,在狀態(tài)欄里有當(dāng)前播放狀態(tài)的相關(guān)說明。在實現(xiàn)以上功能時,幾乎用全了Swflash.ocx控件的主要屬性、方法。 ? ?
? 編程過程如下: ? ?
? 1、窗體、界面設(shè)計。 ? ?
? 新建工程,選擇“工程”菜單下的“部件”命令,在“部件”窗口的“控件”列表中將“Shockwave ? flash”、“Microsoft ? Common ? Dialog ? Control ? 6.0 ? (SP3)”、“Microsoft ? Windows ? Common ? Control ? 6.0 ? (SP3)”前的復(fù)選框選中,然后確定。再在窗體中分別加入1個CommonDialog控件、1個Slider控件、3個Label控件、6個CommandButton控件和1個Status ? Bar控件。其中: ? ?
? 將Form1的“Caption”屬性設(shè)置為:Flash動畫播放器。這是控制窗口。 ? ?
? 將CommonDialog1的CancelError設(shè)置為True,DialogTitle設(shè)置為“打開Flash動畫文件”,Filter屬性設(shè)置為“Flash動畫(*.swf)|*.swf|”,FilterIndex設(shè)置為1,MaxFileSize設(shè)置為10240。 ? ?
? 將Slider1的SelectRanger的屬性設(shè)置為“True”,SmallChange屬性和LargeChange屬性設(shè)置為10,TickFrequengcy屬性設(shè)置為20,TextPosition設(shè)置為“1 ? - ? SldBelowRight”。 ? ?
? 將Label(1-3)分別放在Slider1下的左端、中間和右端。其中,Label1的Caption設(shè)置為“0幀”,Label2和Label3的Caption設(shè)置為空字符串。 ? ?
? 6個CommandButton的“名稱”屬性分別為:cmdOpen、cmdPlay、cmdPause、cmdPre、cmdPreFrame、cmdNextFrame、cmdNext、cmdExit,“Caption”屬性分別為:打開、播放、暫停、上一個、上一幀、下一幀、下一個、退出。 ? ?
? 在Status ? Bar上單擊鼠標(biāo)右鍵,選擇“屬性”,從彈出的窗口中選擇“窗格”頁面,用鼠標(biāo)點擊“插入窗格”5次,在索引1-5中分別設(shè)置“文本”屬性為:“共打開了0個文件”、“狀態(tài):”、“等待”、“幀數(shù):”、“0”,再適當(dāng)設(shè)置每一項的“最小寬度”的屬性(可參考圖1中的比例)。 ? ?
? 進入菜單編輯器(按快捷鍵Ctrl+E)。設(shè)置第一個菜單標(biāo)題為“顯示控制”,名稱為:mnuDisplay;在“顯示控制”下設(shè)立子菜單標(biāo)題分別為“全部顯示”、“隨窗口大小變化”、“縮放至窗口大小”,名稱分別為:mnuDisplay0、mnuDisplay1、mnuDisplay2。設(shè)置第二個菜單標(biāo)題為“質(zhì)量控制”,名稱為:mnuQuality;在“質(zhì)量控制”下設(shè)立子菜單標(biāo)題分別為“低分辨率”、“高分辨率”,名稱分別為:mnuQuality0、mnuQuality1。設(shè)置第三個菜單標(biāo)題為“播放控制”,名稱為:mnuPlayControl;在“播放控制”下設(shè)立子菜單標(biāo)題分別為“循環(huán)播放”、“放大畫面”、“縮小畫面”,名稱分別為:mnuLoopPlay、mnuZoomIn、mnuZoomOut。 ? ?
? 選擇“工程”菜單下的“添加窗體”命令,新增一個窗體Form2作為播放窗口。在Form2上加入1個ShockwaveFlash控件和1個Timer控件。將Timer1控件的“Interval”屬性設(shè)置為“20”。 ? ?
? 最后,對各窗體、控件的大小、位置進行適當(dāng)?shù)恼{(diào)整,其大小、位置可參考圖1。 ? ?
? 2、程序代碼 ? ?
? 第一步:在Form1的代碼窗口中添加以下代碼: ? ?
? Dim ? FileNames() ? As ? String ? ’用于保存打開的文件名稱。 ? ?
? Dim ? PlayFileNum ? As ? Integer ? ’用于計算正在播放的文件序號。 ? ?
? Dim ? TotalFile ? As ? Integer ? ’用于統(tǒng)計打開的文件總數(shù)。 ? ?
? Private ? Sub ? cmdOpen_Click() ? ’打開 ? ?
? On ? Error ? GoTo ? ExitOpen ? ?
? CommonDialog1.Flags ? = ? cdlOFNAllowMultiselect ? Or ? cdlOFNFileMustExist ? Or ? cdlOFNExplorer ? ?
? CommonDialog1.FileName ? = ? ″" ? ?
? CommonDialog1.ShowOpen ? ’顯示“打開”對話框。 ? ?
? ? ’以vbNullChar作為子字符串的邊界分隔字符串CommonDialog1返回的FileName。 ? ?
? FileNames() ? = ? Split(CommonDialog1.FileName, ? vbNullChar) ? ?
? 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 ? ?
? Private ? Sub ? cmdPlay_Click() ? ’開始播放 ? ?
? If ? TotalFile ? < ? 1 ? Then ? Exit ? Sub ? ’用戶還沒有打開文件。 ? ?
? ’顯示Form2開始播放動畫。 ? ?
? Form2.Caption ? = ? FileNames(PlayFileNum) ? + ? ″ ? - ? Flash動畫播放器″ ? ?
? Form2.Show ? ?
? Form2!ShockwaveFlash1.Playing ? = ? True ? ?
? If ? TotalFile ? = ? 1 ? Then ? PlayFileNum ? = ? 0 ? ?
? ’顯示狀態(tài)條的信息。 ? ?
? StatusBar1.Panels(3).Text ? = ? ″正在播放文件:″ ? + ? FileNames(PlayFileNum) ? + ? ″ ? ...″ ? ?
? ’顯示滑動條的狀態(tài)。 ? ?
? Slider1.Max ? = ? Form2!ShockwaveFlash1.TotalFrames ? ?
? Label2.Caption ? = ? Str(Slider1.Max ? / ? 2) ? + ? ″幀″ ? ?
? Label3.Caption ? = ? Str(Slider1.Max) ? + ? ″幀″ ? ?
? End ? Sub ? ?
? Private ? Sub ? cmdPause_Click() ? ’暫停播放 ? ?
? Form2!ShockwaveFlash1.Stop ? ?
? End ? Sub ?
???
? Private ? Sub ? cmdPre_Click() ? ’播放上一個文件 ? ?
? If ? TotalFile ? <> ? 1 ? Then ? ’當(dāng)用戶打開多于一個文件時 ? ?
? PlayFileNum ? = ? PlayFileNum ? - ? 1 ? ?
? If ? PlayFileNum ? < ? 1 ? Then ? PlayFileNum ? = ? TotalFile ? ?
? Form2!ShockwaveFlash1.Movie ? = ? FileNames(0) ? + ? ″/″ ? + ? FileNames(PlayFileNum) ? ?
? End ? If ? ?
? ’顯示播放狀態(tài)的信息。 ? ?
? 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 ? ?
?
? 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 ? ?
? ’顯示播放狀態(tài)的信息。 ? ?
? 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 ?
??
? Private ? Sub ? cmdPreFrame_Click() ? ’跳到動畫的上一幀 ? ?
? Form2!ShockwaveFlash1.Back ? ?
? End ? Sub ?
???
? Private ? Sub ? cmdNextFrame_Click() ? ’跳到動畫的下一幀 ? ?
? Form2!ShockwaveFlash1.Forward ? ?
? End ? Sub
????
? Private ? Sub ? cmdExit_Click() ? ’退出程序 ? ?
? End ? ?
? End ? Sub ? ?
?
? Private ? Sub ? Slider1_Scroll() ? ?
? ’當(dāng)用戶拖動滑動條時,將播放幀數(shù)設(shè)置為滑動條中的值。 ? ?
? Form2!ShockwaveFlash1.FrameNum ? = ? Slider1.Value ? ?
? End ? Sub ?
???
? Private ? Sub ? mnuDisplay0_Click() ? ?
? ’將畫面大小設(shè)置為在控件內(nèi)保持動畫原來比例全部顯示 ? ?
? Form2!ShockwaveFlash1.ScaleMode ? = ? 0 ? ?
? mnuDisplay0.Checked ? = ? True ? ?
? mnuDisplay1.Checked ? = ? False ? ?
? mnuDisplay2.Checked ? = ? False ? ?
? End ? Sub ? ?
? Private ? Sub ? mnuDisplay1_Click() ? ?
? ’將畫面的縮放設(shè)置為隨控件橫向(或縱向)的縮放而變化 ? ?
? Form2!ShockwaveFlash1.ScaleMode ? = ? 1 ? ?
? mnuDisplay0.Checked ? = ? False ? ?
? mnuDisplay1.Checked ? = ? True ? ?
? mnuDisplay2.Checked ? = ? False ? ?
? End ? Sub ?
??
? Private ? Sub ? mnuDisplay2_Click() ? ?
? ’將畫面大小設(shè)置為不理會動畫原來比例縮放至控件大小 ? ?
? Form2!ShockwaveFlash1.ScaleMode ? = ? 2 ? ?
? mnuDisplay0.Checked ? = ? False ? ?
? mnuDisplay1.Checked ? = ? False ? ?
? mnuDisplay2.Checked ? = ? True ? ?
? End ? Sub ? ?
? Private ? Sub ? mnuLoopPlay_Click() ? ?
? ’將播放方式設(shè)置為循環(huán)或不循環(huán)。 ? ?
? mnuLoopPlay.Checked ? = ? Not ? mnuLoopPlay.Checked ? ?
? Form2!ShockwaveFlash1.Loop ? = ? Not ? Form2!ShockwaveFlash1.Loop ? ?
? End ? Sub ?
??
? Private ? Sub ? mnuQuality0_Click() ? ?
? ’將畫面質(zhì)量設(shè)置為低分辨率 ? ?
? Form2!ShockwaveFlash1.Quality ? = ? 0 ? ?
? mnuQuality0.Checked??
?
總結(jié)
以上是生活随笔為你收集整理的如何用VB编写FLASH动画播放器的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 7、C语言回调函数使用
- 下一篇: python爬取微博评论点赞数_pyth