云联天下首页 |  登陆 |  注册 |  密码找回 |  关于我们 | 加入收藏 
首页技术资料图形图像→用VB编写FLASH动画播放器 【字号: 】 【背景色 杏仁黄 秋叶褐 胭脂红 芥末绿 天蓝 雪青 灰 银河白(默认色)

用VB编写FLASH动画播放器

网址来源:http://www.kehui.net发布时间: 2002-09-22 13:14:11


作者:张智亮    



       Flash4是MacroMedia公司出品的矢量动画创作专业软件,利用该软件制作的矢量动画具有文件体积小、带音效和兼容性好等特点。那么,你想不想在自己编写的程序中加入Flash动画,为自己的程序添加一道亮丽的色彩呢?

   

      一、编程原理    

   

      本程序利用了Flash4本身自带播放Flash动画的控件Swflash.ocx。你可以通过以下途径获得该控件:1、安装Flash4;2、安装Windows98自带的Flash插件,方法:依次单击“开始”菜单-“设置”-“控制面板”-“添加/删除程序”-“Windows 安装程序”-“多媒体”-“详细资料”-选中“Macromedia Shockwave Flash”前的复选框确定即可。以上方法都会将该控件安装到Windows目录下的SystemMacromedFlash子目录下。

   

   

      二、示例程序

   

   

      下面就是一个用Swflash.ocx控件编写的Flash动画播放器。本程序可一次打开多个Flash动画文件,并可在播放过程中选择播放打开的文件、随时改变播放质量、画面大小等状态;在播放过程中可以随时对播放的当前帧数进行调整或者手动进行逐帧播放,在状态栏里有当前播放状态的相关说明。在实现以上功能时,几乎用全了Swflash.ocx控件的主要属性、方法。

   

   

      编程过程如下:

   

   

      1、窗体、界面设计。

   

   

      新建工程,选择“工程”菜单下的“部件”命令,在“部件”窗口的“控件”列表中将“Shockwave flash”、“Microsoft Common Dialog Control 6.0 (SP3)”、“Microsoft Windows Common Control 6.0 (SP3)”前的复选框选中,然后确定。再在窗体中分别加入1个CommonDialog控件、1个Slider控件、3个Label控件、6个CommandButton控件和1个Status Bar控件。其中:

   

   

      将Form1的“Caption”属性设置为:Flash动画播放器。这是控制窗口。

   

   

      将CommonDialog1的CancelError设置为True,DialogTitle设置为“打开Flash动画文件”,Filter属性设置为“Flash动画(*.swf)|*.swf|”,FilterIndex设置为1,MaxFileSize设置为10240。

   

   

      将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”属性分别为:打开、播放、暂停、上一个、上一帧、下一帧、下一个、退出。

   

   

      在Status Bar上单击鼠标右键,选择“属性”,从弹出的窗口中选择“窗格”页面,用鼠标点击“插入窗格”5次,在索引1-5中分别设置“文本”属性为:“共打开了0个文件”、“状态:”、“等待”、“帧数:”、“0”,再适当设置每一项的“最小宽度”的属性。

   

   

        进入菜单编辑器(按快捷键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的代码窗口中添加以下代码:

   

   

      Dim FileNames() As String ’用于保存打开的文件名称。

   

   

      Dim PlayFileNum As Integer ’用于计算正在播放的文件序号。

   

   

      Dim TotalFile As Integer ’用于统计打开的文件总数。

   

   

      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

   

   

      ’显示状态条的信息。

   

   

      StatusBar1.Panels(3).Text = ″正在播放文件:″ + FileNames(PlayFileNum) + ″ ...″

   

   

      ’显示滑动条的状态。

   

   

      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 ’当用户打开多于一个文件时

   

   

      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

   

   

      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

   

   

      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()

   

   

      ’当用户拖动滑动条时,将播放帧数设置为滑动条中的值。

   

   

      Form2!ShockwaveFlash1.FrameNum = Slider1.Value

   

   

      End Sub

   

   

      Private Sub mnuDisplay0_Click()

   

   

      ’将画面大小设置为在控件内保持动画原来比例全部显示

   

   

      Form2!ShockwaveFlash1.ScaleMode = 0

   

   

      mnuDisplay0.Checked = True

   

   

      mnuDisplay1.Checked = False

   

   

      mnuDisplay2.Checked = False

   

   

      End Sub

   

   

      Private Sub mnuDisplay1_Click()

   

   

      ’将画面的缩放设置为随控件横向(或纵向)的缩放而变化

   

   

      Form2!ShockwaveFlash1.ScaleMode = 1

   

   

      mnuDisplay0.Checked = False

   

   

      mnuDisplay1.Checked = True

   

   

      mnuDisplay2.Checked = False

   

   

      End Sub

   

   

      Private Sub mnuDisplay2_Click()

   

   

      ’将画面大小设置为不理会动画原来比例缩放至控件大小

   

   

      Form2!ShockwaveFlash1.ScaleMode = 2

   

   

      mnuDisplay0.Checked = False

   

   

      mnuDisplay1.Checked = False

   

   

      mnuDisplay2.Checked = True

   

   

      End Sub

   

   

      Private Sub mnuLoopPlay_Click()

   

   

      ’将播放方式设置为循环或不循环。

   

   

      mnuLoopPlay.Checked = Not mnuLoopPlay.Checked

   

   

      Form2!ShockwaveFlash1.Loop = Not Form2!ShockwaveFlash1.Loop

   

   

      End Sub

   

   

      Private Sub mnuQuality0_Click()

   

   

      ’将画面质量设置为低分辨率

   

   

      Form2!ShockwaveFlash1.Quality = 0

   

   

      mnuQuality0.Checked = True

   

   

      mnuQuality1.Checked = False

   

   

      End Sub

   

   

      Private Sub mnuQuality1_Click()

   

   

      ’将画面质量设置为高分辨率

   

   

      Form2!ShockwaveFlash1.Quality = 1

   

   

      mnuQuality0.Checked = False

   

   

      mnuQuality1.Checked = True

   

   

      End Sub

   

   

      Private Sub mnuZoomIn_Click()

   

   

      ’放大画面。

   

   

      Form2!ShockwaveFlash1.Zoom (50)

   

   

      End Sub

   

   

      Private Sub mnuZoomOut_Click()

   

   

      ’缩小画面。

   

   

      Form2!ShockwaveFlash1.Zoom (200)

   

   

      End Sub

   

   

      Private Sub Form_Unload(Cancel As Integer)

   

   

      End ’结束程序

   

   

      End Sub

   

   

      第二步:在Form2的代码窗口中添加以下代码:

   

   

      Private Sub Form_Resize()

   

   

      ’将ShockwaveFlash1控件的大小设置为Form2的大小。

   

   

      ShockwaveFlash1.Top = Form2.ScaleTop

   

   

      ShockwaveFlash1.Left = Form2.ScaleLeft

   

   

      ShockwaveFlash1.Width = Form2.ScaleWidth

   

   

      ShockwaveFlash1.Height = Form2.ScaleHeight

   

   

      End Sub

   

   

      Private Sub Timer1_Timer()

   

   

      ’在状态栏和滑动条上显示当前播放的帧。

   

   

      Form1!StatusBar1.Panels(5).Text = Str(ShockwaveFlash1.FrameNum)

   

   

      Form1!Slider1.Value = ShockwaveFlash1.FrameNum

   

   

      End Sub

   

   

      第三步:调试、运行程序。

   

   

      当播放Flash动画时,在播放窗口中单击鼠标右键时,将会弹出菜单。在该菜单,我们可以完成控制Flash动画播放的大部份工作。若想取消该功能,只要将Shockwave flash控件的Menu属性设置为False即可。

   

   

      以上程序在Windows98,VB6.0下运行通过。





kehui 

相关新闻
v 让你的浏览器更强!过滤FLASH、控件等等 2002-12-29 14:15:24
v 在delphi中使用flash控件 2002-12-29 14:15:24
v 美国Macromedia发表“Macromedia Flash MX” 2002-12-29 17:27:30
v 推荐用 Flash做一般文字为主的页面 2002-12-29 18:11:28
v Flash播放新秀--David Flash Player V1.4 2002-12-29 18:11:28
v 芝麻开门--谈谈Flash的反编译 2003-06-28 10:03:21
v Flash 中英文字应用环境分析 2003-08-30 22:36:15
v 使用 Flash满足IE和NS的兼容 2003-08-30 22:36:15
v 怎么给网页中的FLASH动画加超连接,加事件... 2004-01-02 21:34:12
v svg 至 flash的转化 2004-01-02 21:34:12
  最新新闻
智慧家居
智慧家居颠覆传统智能家居
智慧云谷让智能家居变成有智慧的
智慧云谷引领智慧家居新生活
科技改变生活 智慧云谷智慧家居系
智慧家居领航者,智慧云谷助你玩
智能家居如何赢得市场美誉度?
智慧云谷智慧家居:创业者有无限
WiFi智能家居你还在用?这样的智
互联网+助推智能家居产业
智慧云谷为您打造真正的智能家居
智能家居产业需要的不是单品,而
新家如何选择开关?智慧云谷iWis
智能传感器-世界首款“智”为你的
智慧云谷开关智能安防智能空气质
智能开关品牌,如何选择智能开关
秋季干燥,智慧家居温湿度传感器
传感器助力智慧家居 感知爱家
iWiscloud智能触摸开关缔造家居装

  最新帖子
 ※室内空气污染的危害及  [sensor]
 ※超声波风速传感器在生  [sensor]
 ※这么冷清  [gabc111]
 ※手机APP操作有问题  [ssy11407]
 ※智慧云谷智慧家居将在  [cici]
 ※上传下载  [cici]
 ※下载智慧家居  [apple2008]
 ※秋季干燥,智慧家居温  [apple2008]
 ※智慧家居紧扣热点 安全  [apple2008]
 ※办公大楼如何智慧化管  [apple2008]
 ※智慧云谷工业自控的优  [apple2008]
 ※传感器助力智慧家居 感  [apple2008]
 ※智能开关品牌,如何选  [apple2008]
 ※智慧云谷开关智能安防  [apple2008]
 ※没有专业人员,如何安  [apple2008]
 ※烟台智慧云谷董事长任  [apple2008]
 ※互联网+助推智能家居产  [apple2008]
 ※WiFi智能家居你还在用  [apple2008]
 ※智慧云谷智慧家居:创  [apple2008]
 ※智能家居如何赢得市场  [apple2008]
钯碳回收 硝酸银回收 银浆回收 银焊条回收 回收银浆 氯化钯回收 氯化钯回收 氧化钯回收 回收硝酸钯 钯水回收价格 海绵钯回收 钯炭回收价格 回收镀金板 深圳钯碳回收 镇江氯化钯回收 杭州钯浆回收 银浆回收多少钱 回收钯碳公司 硝酸银的价格 那里有回收金 氯化钯回收价格 江苏擦银布回收 硝酸银价格 德州钯粉回收 银铜回收 回收钯粉 回收铂碳催化剂 佛山钯碳回收 金盐回收价格 海绵钯回收 钯碳高价回收 钯回收价格 钯炭回收