用Delphi制作简单的Flash播放器
软件世界
在Flash盛行的今天,你是否也想过自己编写一个特色的Flash播放器程序呢?而且还可以在其中加入几幅Flash动画为程序润色!心动不如行动,我们现在就以下面的实例介绍具体方法。
一、编程思路
大家都知道,IE之所以可以播放Flash动画,是由于使用了swflash.ocx控件的缘故。我们可以在系统目录的System\Macromed\文件夹中找到它,因此,在Delphi中封装swflash.ocx控件就可以实现Flash播放。在Delphi中执行菜单Component/Import ActiveX Control...命令,弹出“Import Activex”窗口,找到Shockwave Flash进行安装即可(如(图1))。

下面再介绍一下该控件的几个方法、属性和事件:
TShockwaveFlash主要方法:
Play():开始播放动画;
Stop();停止播放动画;
Back();播放前一帧动画;
Forward():播放后一帧动画;
Rewind():播放第一帧动画;
Zoom(int percent):按百分比缩放;
TShockwaveFlash主要属性:
Movie:指定播放的flash文件路径,可以为一个URL。
Loop:是否循环;
FrameNum:当前播放的帧;
TotalFrames:总帧数;
Playing:播放或暂停一个flash;
Quality:指定当前渲染的质量(0=Low,1=High、2=AutoLow、3=AutoHigh);
ScaleMode:缩放模式(0=ShowAll、1= NoBorder、2 = ExactFit);
BgColor:背景色;
TShockwaveFlash主要事件:
OnProgress(int percent):读取Flash时触发; OnReadyStateChange(int state值0=Loading、1=Uninitialized、2=Loaded、3=Interactive、4=Complete):状态改变时触发。
二、具体制作
下面我们就来制作一个类似Window Mediaplayer风格的Flash播放器。
Step1:更改Form1的Caption属性为Flash Player并向其添加基本控件、设置控件属性。
1.向Form1窗体中添加Mainmenu控件,双击该控件设计主菜单内容(如(图2))。并设置“播放、停止、前进一帧、后退一帧”菜单命令初始状态的Enabled属性值Flash。

2.Panel控件并设置其Height属性值17、Caption为空、Align属性为altop。
3.添加StatusBar控件,双击该控件进入编辑窗口,单击Add New按钮添加一个StatusPanel(如(图3))。

4.添加Timeer控件。
5.添加Opendialog控件。
6.再添加Panel控件,设置其Height属性值42、Caption为空、Align属性为bottom。
7.在刚添加的Panel中添加一个TraclBar控件,设置属性TickStyle为tsnone、属性ThumbLength值为10、Align为altop。
8.再次在Panel中添加七个SpeedButton按钮,并同时设置其Enabled属性值为False,当然您最好选好类似Media Player的按钮图片分别添加到这几个SpeedButton的Glyph属性中。
9.最后向Form1添加ShockwaveFlash控件,并设置Align属性为alclient。这里我们就用到该控件的一个属性Bglor,将其值设置为黑色(000000)。
这样我们就为Form添加了基本的控件,同时设置了它们的属性,其效果如(图4)。下面就为其写入相应响应代码即可。

Step2:编写响应代码。
分析当打开一个Flash文件时,由ShockwaveFlash控件播放该动画文件,相应菜单命令和控制按钮Enabled状态改变为Ture,同时状态条提示“正在播放Flash动画”。在菜单“打开Flash文件”命令下写入Onclick代码如下:
procedure Tform1.Flash2Click(Sender: TObject);
begin
if OpenDialog1.Execute then
begin
ShockwaveFlash1.movie:= OpenDialog1.FileName;{播放Flash文件}
StatusBar1.Panels[0].Text :='正在播放Flash... ';{状态条提示}
{菜单播放命、停止、前进一帧、后退一帧命令可控制}
mainpopmennu1.checked:=true;
mainpopmenu1.enabled:=true;
mainpopmenu2.enabled:=true;
mainpopmenu3.enabled:=true;
{面板控制按钮可控制}
buttonplay.enabled:=true;
buttonpause.enabled:=true;
buttonstop.enabled:=true;
buttonnext.enabled:=true;
buttonback.enabled:=true;
buttonfor.enabled:=true;
buttonrew.enabled:=true;
end;
end;
这样,我们就可以打开并且播放一个Flash文件了。
至于控制按钮和菜单命令我们使用ShockwaveFlash主要方法和属性即可:
播放:ShockwaveFlash1.playing:=true;
停止:ShockwaveFlash1.playing:=false;
前进一帧:ShockwaveFlash1.forward;
后退一帧:ShockwaveFlash1.back;
渲染质量:高(shockwaveFlash1.quality:=3;)、粗糙(ShockwaveFlash1.quality:=0;)、中(ShockwaveFlash1.quality:=2;)
最后一帧:ShockwaveFlash1.FrameNum:=ShockwaveFlash1.TotalFrames;
第一帧:ShockwaveFlash1.Rewind;
最后我们设置TraclBar控件的显示状态,在Timeer控件的ontimer事件中写入代码flashbar.position:=ShockwaveFlash1.framenum;即可实现滑条的滑动显示。
上面讲述了主要代码的写入,当然我们还可以穿插起来控制菜单命令和控制按钮以及状态条、滑条的显示状态,这主要改变各控件的Enabled和Checked属性就可以实现了。有关该程序,大家可以到http://go5.163.com/chilq/delphi/flashplayer.htm去下载该播放器观看其效果。
注:该程序在Delphi6下调试通过。