您的位置:IT教程网首页>软件开发教程>VB教程>DIY自己的Flash播放器

DIY自己的Flash播放器

要说Flash动画是时下网上最流行的东东想来不会有人反对的,每当看到优秀作品笔者就急不可待download,但是收集了那么多却发现没有好用的Flash播放器来播放。笔者首先想到的是Flash5中自带的播放器,可是其功能实在太弱,而且还要安装几十MB的Flash5,未免大材小用,难道只能在网页上欣赏吗?于是,我想到自己做一个--这听上去很诱人,复杂吗?别担心,用VB就行,做出来的播放器功能一点也不弱,具有相当水准,你可以自由的选择播放、暂停、重播,还可以单帧逐步播放,来观察作者的每一步设想,甚至可以像看VCD一样看Flash文件,随意跳帧。够酷吧!让你充分体验一回作为软件DIYer的乐趣。

下面我将具体地阐述整个开发过程。

::理论分析::

·如何实现播放Flash动画?

Flash播放器也属于多媒体播放器的一类,所以应包括完整的播放控制功能:播放、暂停、停止、重播、后退一帧、前进一帧、最后一帧、快退、快进,循环播放和全屏幕播放。由于Flash动画是矢量动画,针对此特点还得有缩放和质量调节的功能。

要实现如此多的功能无须自己编程,只要调用系统中的Flash播放控件提供的接口,其实Flash5中自带的播放器和网上众多的Flash播放都是这样做的。

假如你上网能正常浏览有Flash动画的网页,那么你的系统中已经有此控件了。若没有,你可以通过“控制面板”-“添加/删除程序”进行安装。选择“Windows安装程序”页,在“多媒体”中选择“具体资料”,“Macromedia Shockwave Flash”就是我们需要的,将其前面的复选框选中,再将Windows安装光盘放入光驱,点击“确定”即可将控件Swflash.ocx安装注册;或者你也可以直接在浏览有Flash动画的网页IE提示你下载此控件时自动下载安装。

说到这里你可能认为既然控件很轻易得到,又只不过是调用控件提供的接口,没有什么难点。请注重!基于Flash控件的开发是没有公开的技术资料可查的,其资料必须以开发商业软件为目的同Macromedia签定有关协议后才可能获得,而且是要付费的。因此笔者在开发过程中走了不少弯路,有些属性和方法的使用是在摸索中逐渐搞清楚的,部分接口到目前为止笔者还是不知道怎样使用,在后面的源代码中你也能看得出探索的痕迹。

·非凡问题:如何全屏幕播放?

全屏幕播放是个看似简单,实现起来一点也不轻易的功能。在所有的播放控制功能中,全屏幕播放是唯一一个不是由Flash控件提供的,因为只有窗口才有全屏的概念,控件则没有,因此它需要播放器自己实现。全屏的要求是窗口布满屏幕,并且无标题条的边框,这就需要在运行时刻动态改变窗口的风格,但我们知道VB开发的程序,没有提供在运行时刻动态更改窗口风格的方法(运行时更改窗口的BorderStyle无效,ControlBox属性不能在运行时更改),看来惟有借助Windows API了。Windows在user32.dll中提供了一组对应函数来分别获取和更改窗口的属性--GetWindowlong和SetWindowLong,它们都可以在VB的API Loader中找到:Private Declare Function GetWindowLong Lib "user32" Alias "GetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long) As Long;
Private Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long。其中hwnd参数是被操作窗口的句柄;nIndex参数告诉函数要操作窗口的什么属性,在本程序中传入GWL_STYLE值,其他参数值可查阅MSDN;dwNewLong参数是新的窗口属性值。标准的窗口风格是有标题条和可缩放的边框,对应的窗口风格参数值是WS_CAPTION和WS_THICKFRAME,所以要实现全屏只要将窗口风格属性中的这两个值去掉就达到效果了,要恢复也很简单,重新加上这两个值即可。

了解原理后,下面我们就进行编程实践了!

::编程实践::

打开VB,新建一个标准的EXE工程,将工程名称命名为"MyFlashPlayer",在控件箱中添加CommonDialog、StatusBar、Slider、ShockwaveFlash控件。将默认生成的窗口Name属性改为"frmMyFlashPlayer",Caption改为"My FlashPlayer",ScaleMode改为"3 - Pixel",然后依次添加以下控件:

1、12个按钮(CommandButton),Name属性分别为"cmdPlaySWF"、"cmdPauseSWF"、"cmdStopSWF"、
"cmdRewindSWF"、"cmdStePBackSWF"、"cmdStepForwardSWF"、"cmdGotoEndSWF"、
"cmdFastBackSWF"、"cmdFastForwardSWF"、"cmdZoomInSWF"、"cmdZoomOutSWF"、
"cmdZoomNoSWF",Caption属性分别为“播放”、“暂停”、“停止”、“重播”、“后退”、“前进”、“末帧”、“快退”、“快进”、“放大”、“缩小”、“正常”。

2、1个划动条(Slider),Name属性为SliderSWF,Max属性为"100"(表示100%),TickStyle属性为"3 - sldNoTicks"。1个状态栏(StatusBar),双击其属性中的“(自定义)”,在弹出的属性页的窗格栏中,插入2个窗格,并将2个窗格的对齐方式设置为"1 - sbrCenter"。

3、1个定时器(Timer),Name属性为TimerSWF,Enabled属性为"False",Interval属性为"1000"。1个通用对话框(CommonDialog),Name属性为"OpenDialogSWF",DialogTitle属性为“打开Flash动画文件”,Filter属性为“Flash动画文件(*.swf)|*.swf|所有文件(*.*)|*.*”,FilterIndex属性为"1"。

4、1个ShockwaveFlash控件,Name属性为MyShockwaveFlash,点击鼠标右键弹出快捷菜单,选择“置前”,使其在所有控件的最上面,全屏幕播放需要此设置,在后面源代码中笔者将说明其用途。

5、打开菜单编辑器,添加如下菜单:“文件(&F)”(mnuFileSWF)、“打开(&O)”(Ctrl O)(mnuOpenSWF)、“退出(&X)”(mnuExitSWF)、“查看(&V)”(mnuViewSWF)、“质量(&Q)”(mnuQualitySWF)、“高(&H)”(复选)(mnuQualityHigh)、“中(&M)”(mnuQualityMedium)、“低(&L)”(mnuQualityLow)、“循环播放(&L)”(复选)(mnuLoopSWF)、“快捷菜单(&M)”(复选)(mnuMenuSWF)、“全屏幕播放(&F)”(F11)(mnuFullScreenSWF)。其中“文件”包括“打开”、“退出”,“查看”包括“质量”、“循环播放”、“快捷菜单”、“全屏幕播放”,“质量”又包括“高”、“中”、“低”。

好了,界面设计完成,效果如图1。

共3页: 上一页 1 [2] [3] 下一页