喬紅荻
提要本文介紹了基于.NET平臺的Flash動(dòng)畫的集成開發(fā)方法,以實(shí)例說明利用Flash ActiveX如何實(shí)現(xiàn)基于.NET平臺與Flash的多媒體應(yīng)用程序集成開發(fā)。
關(guān)鍵詞:Flash;多媒體;集成開發(fā)
中圖分類號:TP31文獻(xiàn)標(biāo)識碼:A
一、引言
Flash是Macromedia公司最新推出的動(dòng)畫制作軟件。Flash主要功能是制作發(fā)布在網(wǎng)上的動(dòng)畫,但現(xiàn)在也越來越多地應(yīng)用于多媒體領(lǐng)域,Flash MX作為動(dòng)畫制作軟件,具有簡單易學(xué)、開發(fā)效率高等特點(diǎn),作為多媒體設(shè)計(jì)軟件方面,可以方便地設(shè)計(jì)出具有良好交互的多媒體前端應(yīng)用程序;另一方面,大型的多媒體應(yīng)用需要訪問數(shù)據(jù)庫等較為底層的操作,這時(shí)僅僅使用Flash MX進(jìn)行開發(fā)就有些吃力。這里給出結(jié)合.NET平臺與Flash MX一起進(jìn)行開發(fā)大型多媒體應(yīng)用程序的方案,既可以設(shè)計(jì)出漂亮的界面,又可以實(shí)現(xiàn)強(qiáng)大的功能。
二、在.NET平臺上與FLASH MX動(dòng)畫進(jìn)行交互的方法
網(wǎng)頁中之所以能夠顯示FLASH動(dòng)畫,是因?yàn)闉g覽包含F(xiàn)LASH動(dòng)畫網(wǎng)頁的時(shí)候,瀏覽器一般會在本地安裝Shockwave Flash控件。這是Macromedia公司提供的一個(gè)ActiveX控件,而.NET平臺對ActiveX控件具有很好的支持。我們只要找到Shockwave Flash控件,就可以在.NET平臺中加入FLASH動(dòng)畫。動(dòng)畫的加入只是第一步,接下來我們可以通過以下幾種方法在.NET平臺中與FLASH動(dòng)畫進(jìn)行交互:
1、應(yīng)用程序通過Shockwave Flash控件的一些方法和屬性來控制Flash動(dòng)畫的播放以及獲取或設(shè)置播放器的屬性。這是Shockwave Flash控件對動(dòng)畫的基本控制。主要的屬性和方法如下:
●Movie:指定播放的Flash文件路徑,可以為一個(gè)URL;
●Menu:是否顯示控制菜單;
●Loop:是否循環(huán);
●Quality:指定當(dāng)前渲染的質(zhì)量;
●ReadyState:讀一個(gè)Flash文件時(shí)的狀態(tài),其中包括0=Load2ing,1=Uninitialized,2=Loaded,3=Interactive和4=Complete;
●Play():開始播放指定的Flash動(dòng)畫;
●Stop():停止播放動(dòng)畫;
●Back():播放前一幀動(dòng)畫;
●Forward():播放后一幀動(dòng)畫;
●Rewind():播放第一幀動(dòng)畫;
●Zoom(Percent as Integer):按百分比縮放;
●GotoFrame(FrameNum as Long),將播放頭移到指定幀。
有了這些屬性和方法,我們就可以在.NET平臺下控制Flash動(dòng)畫的狀態(tài)。
2、反過來,如何在嵌入的Flash動(dòng)畫中控制.NET平臺下的應(yīng)用程序從而實(shí)現(xiàn)交互式的操作呢?首先我們來了解Flash中控制.NET平臺應(yīng)用程序的基本原理:在Flash的ActionScript里面有個(gè)叫做FSCommand()的函數(shù),它的主要功能就是發(fā)送FScommand命令,例如使動(dòng)畫全屏播放,隱藏動(dòng)畫菜單。首先來看FScommand命令的格式:
fscommand("command","parameters")
在.NET平臺應(yīng)用程序中,我們就是利用的Shockwave flash控件的FSCommand()過程來完成這一通信過程,實(shí)現(xiàn)信息發(fā)送的功能,并且根據(jù)發(fā)送出來的不同命令及參數(shù)來實(shí)現(xiàn)對程序的控制。
可以看到,不僅可以在.NET平臺應(yīng)用程序里播放控制Flash作品,而且還可以在Flash動(dòng)畫中編寫Action腳本代碼來控制.NET平臺應(yīng)用程序的運(yùn)行。由此,實(shí)現(xiàn)了.NET平臺應(yīng)用程序與Flash動(dòng)畫之間的完全交互和集成開發(fā)。
三、具體應(yīng)用細(xì)節(jié)
第一步,制作Flash動(dòng)畫。此步利用FlashMX強(qiáng)大的設(shè)計(jì)工具,任意設(shè)計(jì)制作一個(gè)多媒體動(dòng)畫。
第二步,在VS.NET中控制Flash的播放。打開VS.NET,打開新建項(xiàng)目窗口,左邊“項(xiàng)目類型”中選擇“Visual C#”項(xiàng)目,右邊“模板”中選擇“Windows應(yīng)用程序”,輸入項(xiàng)目名稱,然后確定。在“工具箱”中點(diǎn)開組件頁,單擊右鍵,選擇“添加/移除項(xiàng)”,即打開“自定義工具箱”,再點(diǎn)擊“COM組件”頁面,從中選擇“Macromedia Flash Factory Object”,如果沒有這一項(xiàng),可點(diǎn)擊“瀏覽”按鈕后再系統(tǒng)中查找Flash.ocx文件(如果系統(tǒng)為win2003,請?jiān)凇癈:WINNTsystem32MacromedFlash”目錄下找到該文件)。
添加完Flash的COM組件后,工具箱中的組件頁面下就會出現(xiàn)“Macromedia Flash Factory Object”和“Shockwave Flash Object”兩個(gè)控件。在主窗體上建一個(gè)“Shockwave Flash Object”控件,名字為axShockwaveFlash1。在窗體的Load事件里面添加下面代碼:
axShockwaveFlash1.Loop=false;
axShockwaveFlash1.Movie=Application.StartupPath+@"maopao.swf";
axShockwaveFlash1.Play();
這幾行代碼規(guī)定主窗體啟動(dòng)后馬上加載指定的Flash動(dòng)畫文件并播放。如果有需要,可參考本文第二部分羅列出來的屬性與算法,對此控件進(jìn)行進(jìn)一步的控制。
第三步,利用Flash控制應(yīng)用程序的運(yùn)行狀態(tài)。在第一步中的Flash動(dòng)畫中可以加入一個(gè)按鈕,設(shè)置其執(zhí)行動(dòng)作如下:
on(release){fscommand("ok");}
當(dāng)按下按鈕后,此Flash向應(yīng)用程序發(fā)送出名為“ok”的命令。
回到VS.NET環(huán)境中,在應(yīng)用程序中的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("應(yīng)用程序接受Flash動(dòng)畫信息成功!");
this.BackColor=Color.Blue;
}
}
通過以上處理Flash動(dòng)畫傳遞的FSCommand函數(shù)中的信息,我們就可以在應(yīng)用程序中相應(yīng)Flash動(dòng)畫的命令。上面的例子中點(diǎn)擊相應(yīng)按鈕,則會在應(yīng)用程序中出現(xiàn)一個(gè)對話框,然后改變應(yīng)用程序的背景顏色。
利用Flash可以制作出畫面細(xì)膩,色彩艷麗的動(dòng)畫作品,如果再將其與強(qiáng)大的.NET平臺相結(jié)合,可以制作出更加功能復(fù)雜的多媒體應(yīng)用程序。
(作者單位:南陽市體育運(yùn)動(dòng)學(xué)校)
主要參考文獻(xiàn):
[1]韓春紅,薛濤.基于VB.NET多媒體Flash播放器的實(shí)現(xiàn).中國校外教育(理論),2008.3.
[2]謝富平.基于FLASH技術(shù)的網(wǎng)絡(luò)多用戶媒體播放控件的研究與實(shí)現(xiàn).麗水學(xué)院學(xué)報(bào),2009.2.