基于.NET平台的Flash应用集成开发
2009-10-27乔红荻
乔红荻
提要本文介绍了基于.NET平台的Flash动画的集成开发方法,以实例说明利用Flash ActiveX如何实现基于.NET平台与Flash的多媒体应用程序集成开发。
关键词:Flash;多媒体;集成开发
中图分类号:TP31文献标识码:A
一、引言
Flash是Macromedia公司最新推出的动画制作软件。Flash主要功能是制作发布在网上的动画,但现在也越来越多地应用于多媒体领域,Flash MX作为动画制作软件,具有简单易学、开发效率高等特点,作为多媒体设计软件方面,可以方便地设计出具有良好交互的多媒体前端应用程序;另一方面,大型的多媒体应用需要访问数据库等较为底层的操作,这时仅仅使用Flash MX进行开发就有些吃力。这里给出结合.NET平台与Flash MX一起进行开发大型多媒体应用程序的方案,既可以设计出漂亮的界面,又可以实现强大的功能。
二、在.NET平台上与FLASH MX动画进行交互的方法
网页中之所以能够显示FLASH动画,是因为浏览包含FLASH动画网页的时候,浏览器一般会在本地安装Shockwave Flash控件。这是Macromedia公司提供的一个ActiveX控件,而.NET平台对ActiveX控件具有很好的支持。我们只要找到Shockwave Flash控件,就可以在.NET平台中加入FLASH动画。动画的加入只是第一步,接下来我们可以通过以下几种方法在.NET平台中与FLASH动画进行交互:
1、应用程序通过Shockwave Flash控件的一些方法和属性来控制Flash动画的播放以及获取或设置播放器的属性。这是Shockwave Flash控件对动画的基本控制。主要的属性和方法如下:
●Movie:指定播放的Flash文件路径,可以为一个URL;
●Menu:是否显示控制菜单;
●Loop:是否循环;
●Quality:指定当前渲染的质量;
●ReadyState:读一个Flash文件时的状态,其中包括0=Load2ing,1=Uninitialized,2=Loaded,3=Interactive和4=Complete;
●Play():开始播放指定的Flash动画;
●Stop():停止播放动画;
●Back():播放前一帧动画;
●Forward():播放后一帧动画;
●Rewind():播放第一帧动画;
●Zoom(Percent as Integer):按百分比缩放;
●GotoFrame(FrameNum as Long),将播放头移到指定帧。
有了这些属性和方法,我们就可以在.NET平台下控制Flash动画的状态。
2、反过来,如何在嵌入的Flash动画中控制.NET平台下的应用程序从而实现交互式的操作呢?首先我们来了解Flash中控制.NET平台应用程序的基本原理:在Flash的ActionScript里面有个叫做FSCommand()的函数,它的主要功能就是发送FScommand命令,例如使动画全屏播放,隐藏动画菜单。首先来看FScommand命令的格式:
fscommand("command","parameters")
在.NET平台应用程序中,我们就是利用的Shockwave flash控件的FSCommand()过程来完成这一通信过程,实现信息发送的功能,并且根据发送出来的不同命令及参数来实现对程序的控制。
可以看到,不仅可以在.NET平台应用程序里播放控制Flash作品,而且还可以在Flash动画中编写Action脚本代码来控制.NET平台应用程序的运行。由此,实现了.NET平台应用程序与Flash动画之间的完全交互和集成开发。
三、具体应用细节
第一步,制作Flash动画。此步利用FlashMX强大的设计工具,任意设计制作一个多媒体动画。
第二步,在VS.NET中控制Flash的播放。打开VS.NET,打开新建项目窗口,左边“项目类型”中选择“Visual C#”项目,右边“模板”中选择“Windows应用程序”,输入项目名称,然后确定。在“工具箱”中点开组件页,单击右键,选择“添加/移除项”,即打开“自定义工具箱”,再点击“COM组件”页面,从中选择“Macromedia Flash Factory Object”,如果没有这一项,可点击“浏览”按钮后再系统中查找Flash.ocx文件(如果系统为win2003,请在“C:WINNTsystem32MacromedFlash”目录下找到该文件)。
添加完Flash的COM组件后,工具箱中的组件页面下就会出现“Macromedia Flash Factory Object”和“Shockwave Flash Object”两个控件。在主窗体上建一个“Shockwave Flash Object”控件,名字为axShockwaveFlash1。在窗体的Load事件里面添加下面代码:
axShockwaveFlash1.Loop=false;
axShockwaveFlash1.Movie=Application.StartupPath+@"maopao.swf";
axShockwaveFlash1.Play();
这几行代码规定主窗体启动后马上加载指定的Flash动画文件并播放。如果有需要,可参考本文第二部分罗列出来的属性与算法,对此控件进行进一步的控制。
第三步,利用Flash控制应用程序的运行状态。在第一步中的Flash动画中可以加入一个按钮,设置其执行动作如下:
on(release){fscommand("ok");}
当按下按钮后,此Flash向应用程序发送出名为“ok”的命令。
回到VS.NET环境中,在应用程序中的InitializeComponent方法中添加以下代码:
private void InitializeComponent()
{
……
this.axShockwaveFlash1.FSCommand+=new AxShockwaveFlashObjects._IShockwaveFlashEvents_FSCommandEventHandler(this.axShockwaveFlash1_FSCommand);
……
}
最后添加如下事件处理程序:
private void axShockwaveFlash1_FSCommand(object sender,AxShockwaveFlashObjects._IShockwaveFlashEvents_FSCommandEvente)
{
if(e.command=="ok")
{
MessageBox.Show("应用程序接受Flash动画信息成功!");
this.BackColor=Color.Blue;
}
}
通过以上处理Flash动画传递的FSCommand函数中的信息,我们就可以在应用程序中相应Flash动画的命令。上面的例子中点击相应按钮,则会在应用程序中出现一个对话框,然后改变应用程序的背景颜色。
利用Flash可以制作出画面细腻,色彩艳丽的动画作品,如果再将其与强大的.NET平台相结合,可以制作出更加功能复杂的多媒体应用程序。
(作者单位:南阳市体育运动学校)
主要参考文献:
[1]韩春红,薛涛.基于VB.NET多媒体Flash播放器的实现.中国校外教育(理论),2008.3.
[2]谢富平.基于FLASH技术的网络多用户媒体播放控件的研究与实现.丽水学院学报,2009.2.