錢(qián)路寬
摘要 本文介紹了用Fscommand實(shí)現Flash動(dòng)畫(huà)和Windows應用程序之間的數據通信的方法,同時(shí)附有技術(shù)實(shí)現的關(guān)鍵函數。
關(guān)鍵詞 Fscommand;Windows應用窗體;Flash動(dòng)畫(huà)
1 引言
在網(wǎng)頁(yè)的制作中,Flash和Asp網(wǎng)頁(yè)之間的數據通信的資料比較多,但關(guān)于如何實(shí)現Flash和Winform之間的數據通訊的實(shí)現方法比較少,甚至可以說(shuō)沒(méi)有。事實(shí)上除了網(wǎng)頁(yè)經(jīng)常要和flash進(jìn)行交互外,Windows應用程序和Flash間的交互也是必不可少的,因此將網(wǎng)頁(yè)和flash的交互技術(shù)擴展到Winform和Flash的交互就有實(shí)際應用價(jià)值,值得去探討。
2 技術(shù)簡(jiǎn)介
在.net環(huán)境中,實(shí)現Flash動(dòng)畫(huà)和Windows應用程序之間的數據通信的方法之一便是用Fscommand函數。
FSCommand命令是Flash系統用來(lái)支持其他應用程序互相傳達命令的工具,有在Flash播放器和網(wǎng)頁(yè)兩方面用途(通過(guò)本文將得出在Winform中也可以應用)。
(1)能使Flash向腳本語(yǔ)言發(fā)送命令??梢允钦{用腳本語(yǔ)言中的一段函數或傳遞變量給腳本語(yǔ)言等。
(2)能使腳本語(yǔ)言(js,vbs)向Flash發(fā)送命令??梢允墙oFlash中定義變量或是直接控制Flash動(dòng)畫(huà)的時(shí)間線(xiàn)上的跳轉或給Flash中定義實(shí)體的屬性等
(2)能使腳本語(yǔ)言(js,vbs)向Flash發(fā)送命令??梢允墙oFlash中定義變量或是直接控制Flash動(dòng)畫(huà)的時(shí)間線(xiàn)上的跳轉或給Flash中定義實(shí)體的屬性等
3 技術(shù)的實(shí)現
在.net中,默認沒(méi)有Flash的插件,為了將Flash動(dòng)畫(huà)嵌入到winform中應將Flash插件添加Winform的工具箱中,即添加Shockwave flash object控件,步驟為:
點(diǎn)擊工具箱à右擊選擇”添加移除項”à選擇”com組件” à找到并選擇shockwave flash objectà點(diǎn)擊確定..
然后是代碼的編寫(xiě):
(1)將值從Flash中傳到Winform中:
在Flash Mx中編寫(xiě)ActionScript:
①制作一按鈕,并將其命名為Buttoninflash。
②在這一按鈕所在的幀中編寫(xiě)代碼:,格式如下:
buttoninflash.onPress = function() {
fscommand("gege", "從flash到winform的值!");
};//gege 作為函數名調用
③保存并發(fā)布此flash文件。
在vs.net中,編寫(xiě)Winform代碼
①在Winform的界面上添加shockwave flash object控件,并將該控件的movie屬性設置為所要嵌入的flash播放文件的路徑。
②在Winform中添加一個(gè)textbox,將其命名為textbox1.此控件用來(lái)顯示從Flash傳向Winform的參數。
③在 Winform的事件屬性Fscommand中寫(xiě)上gege。
④在.net后臺編寫(xiě)代碼,格式如下:
private void gege(object sender, AxShockwaveFlashObjects._IShockwaveFlashEvents_FSCommandEvent e)
{
textBox1.Text=e.args.ToString();
}
從flash向winform傳值完成,運行winform程序,點(diǎn)擊flash播放文件中的按鈕,可以看到"從flash 到winform的值!"顯示在textbox中。
4 從Winform中傳值到Flash中
(1)在已編輯過(guò)的Flash文件中添加一文本框,定義其實(shí)體名為lable1,用來(lái)顯示W(wǎng)inform傳給flash動(dòng)畫(huà)的參數。
然后將Flash文件重新保存并發(fā)布。
(2)打開(kāi)已編輯過(guò)的Winform,添加一個(gè)button控件,取名為buttoninwinform,然后雙擊此按鈕,添加Click代碼:
private void buttoninwinform_Click(object sender, System.EventArgs e)
{
axShockwaveFlash1.SetVariable("lable1.text","從winform到flash的值 ");
}
運行flash和winform點(diǎn)擊winfrom中的button控件,則"從Winform到Flash中的值"在flash中的文本框中顯示,如果你再點(diǎn)擊flash中的button按鈕, “從Flash到Winform的值 "將在Winform中顯示。
5 實(shí)例應用
移動(dòng)辦公GIS中的應用。此辦公系統主要功能是:Flash中的一個(gè)區域作為一個(gè)熱點(diǎn)(對象),每一個(gè)對象有按鈕的特點(diǎn),一觸動(dòng)區域,把這個(gè)區域的信息(指哪個(gè)地方)信息保存下來(lái)Winform接到信息后,對這個(gè)區域的信息進(jìn)行查詢(xún),結果顯示出來(lái),反過(guò)來(lái)一樣的道理,通過(guò)表格數據來(lái)得到flash圖。

運用上面的有關(guān)Flash動(dòng)畫(huà)和Winform的數據通信的方法可以很實(shí)現該移動(dòng)辦公系統的主要技術(shù)關(guān)鍵——數據傳遞。
上面使用了Fscommand命令實(shí)現了Flash和Windows應用程序間的傳值,其實(shí)用socket函數同樣也能實(shí)現數據的傳值,只是用socket實(shí)現傳值比較繁,但它安全,它使用到了監聽(tīng)的方式,在這里不討論了。
6 結束語(yǔ)
Flash動(dòng)畫(huà)和Windows應用程序的結合,肯定能使系統更加美觀(guān),但同時(shí)也帶來(lái)了如何進(jìn)行數據通信的問(wèn)題,如何實(shí)現通信,用什么樣的方式進(jìn)行通信便成為了實(shí)現該系統的關(guān)鍵所在,用Fscommand函數比較方便的實(shí)現了高效的數據通信。
參考文獻:
1 丁建超.《Flash 5 高級實(shí)例教程:ActionScript 編程篇》. 中國青年出版社
2 鄭小平《Visual C#.NET開(kāi)發(fā)實(shí)踐》 人民郵電出版社
3 PowellRobert .《C#和.NET架構》. 人民郵電出版社

