使用Flash和C# WinForm配合打造界面漂亮的應用程序(摘要)作者:不詳 文章來源:互聯(lián)網(wǎng) 點擊數(shù):986
更新時間:2007-08-20 13:27:28
責任編輯: 天之驕子
由于之前一陣公司一個項目提出的需求,自己也想進行這方面的嘗試,我對如何使用 Flash 來做 WinForm 程序的界面產(chǎn)生了興趣,于是學習了一些資料,摘要于此。 要在 WinForm 中使用 Flash,通常需要用到 Shockwave Flash Object 這個 COM 組件。 具體步驟如下: Movie: Flash 的存放地址 接下來你可以設置其他一些屬性,使得 Flash 的窗口最大化,隱藏掉其宿主程序的 C# WinForm 窗體。 在 Flash 的 ActionScript 中,可以通過 FSCommand 函數(shù)與 hosting app 通信,該函數(shù)有兩個參數(shù),分別是: command: 命令名稱 例子: on(press){
fscommand("Circule", "Green"); } 在 C# 中,處理 Flash 對象的 FSCommand 事件即可。 e.command -> Flash 中調(diào)用 FSCommand 時的 command 參數(shù); 在 C# 中往 Flash 傳遞數(shù)值用 SetVariable 方法: axShockwaveFlash1.SetVariable("variablename", "valueasstring");
對應的,有一個 GetVariable 方法可以獲得 Flash 中的變量值。 FSCommand 的參數(shù)只能傳遞一個,所以其功能存在一定的局限性。在你需要傳遞多個參數(shù)的時候,則需要在調(diào)用方用字符串拼接各個參數(shù)值,然后在被調(diào)用方重新解開。這種辦法使得復雜的傳值顯得很丑陋。 不過,除了 FSCommand 外,我們還有另一種辦法和 Flash 通信,就是使用 Flash Player 8 External API. 使 用 External API,可以實現(xiàn) ActionScript 和 C# 的雙向調(diào)用。其好處就在于每次調(diào)用時的參數(shù)和返回值都通過一個 XML 文檔來傳遞,這樣就比 FSCommand 功能完善了很多。當然在 C# 中,我們也需要聲明一下外部函數(shù)實現(xiàn)的對應關系。 代碼片段: import Flash.external.ExternalInterface;
ExternalInterface.addCallback("loadAndPlayVideo", null, loadAndPlayVideo); C# 中調(diào)用 Flash 的情形: FlashPlayer.CallFunction("<invoke" +
" name=\"loadAndPlayVideo\" returntype=\"XML\"> <arguments><string>" + fileDialog.FileName + "</string></arguments></invoke>"); 在 ActionScript 中調(diào)用 C# 函數(shù): ExternalInterface.call("ResizePlayer",
videoPlayer.metadata.width, videoPlayer.metadata.height); 在 C# 中聲明被 Flash 調(diào)用的函數(shù): FlashPlayer.FlashCall +=
new _IShockwaveFlashEvents_FlashCallEventHandler(FlashPlayer_FlashCall); 在此,我們可以看到 C# 和 Flash 進行通信還是相當方便的。 除此之外,我順便搜索到其他一些和 Flash 有關的不錯的文章: Flash and .NET with FlashRemoting Multiple File Upload With Progress Bar Using Flash and ASP.NET Flash GUI for your exe using minimalistic approach (C++) |
|
來自: ShangShujie > 《.net》