日韩黑丝制服一区视频播放|日韩欧美人妻丝袜视频在线观看|九九影院一级蜜桃|亚洲中文在线导航|青草草视频在线观看|婷婷五月色伊人网站|日本一区二区在线|国产AV一二三四区毛片|正在播放久草视频|亚洲色图精品一区

分享

使用Flash和C

 ShangShujie 2008-05-15

使用Flash和C# WinForm配合打造界面漂亮的應(yīng)用程序(摘要)

作者:不詳 文章來源:互聯(lián)網(wǎng) 點(diǎn)擊數(shù):986 更新時(shí)間:2007-08-20 13:27:28 責(zé)任編輯: 天之驕子           
 

由于之前一陣公司一個(gè)項(xiàng)目提出的需求,自己也想進(jìn)行這方面的嘗試,我對如何使用 Flash 來做 WinForm 程序的界面產(chǎn)生了興趣,于是學(xué)習(xí)了一些資料,摘要于此。

要在 WinForm 中使用 Flash,通常需要用到 Shockwave Flash Object 這個(gè) COM 組件。
(http://www./csharp/fscommand.asp)
(http://www./useritems/FlashDBInteract.asp)

具體步驟如下:
首先添加對 COM 組件 Shockwave Flash Object 的引用,將該組件拖到窗體上之后,可性:

Movie: Flash 的存放地址
EmbedMovie: 是否嵌入到程序的資源中。

接下來你可以設(shè)置其他一些屬性,使得 Flash 的窗口最大化,隱藏掉其宿主程序的 C# WinForm 窗體。

在 Flash 的 ActionScript 中,可以通過 FSCommand 函數(shù)與 hosting app 通信,該函數(shù)有兩個(gè)參數(shù),分別是:

command: 命令名稱
parameters: 參數(shù)

例子:

on(press){
     fscommand(
"Circule""Green");
}

在 C# 中,處理 Flash 對象的 FSCommand 事件即可。
如果該事件處理函數(shù)的 EventArgs 為 e, 則有如下對應(yīng)關(guān)系:

e.command -> Flash 中調(diào)用 FSCommand 時(shí)的 command 參數(shù);
e.args -> Flash 中調(diào)用 FSCommand 時(shí)的 arguments 參數(shù)。

在 C# 中往 Flash 傳遞數(shù)值用 SetVariable 方法:

axShockwaveFlash1.SetVariable("variablename""valueasstring");

對應(yīng)的,有一個(gè) GetVariable 方法可以獲得 Flash 中的變量值。

FSCommand 的參數(shù)只能傳遞一個(gè),所以其功能存在一定的局限性。在你需要傳遞多個(gè)參數(shù)的時(shí)候,則需要在調(diào)用方用字符串拼接各個(gè)參數(shù)值,然后在被調(diào)用方重新解開。這種辦法使得復(fù)雜的傳值顯得很丑陋。

不過,除了 FSCommand 外,我們還有另一種辦法和 Flash 通信,就是使用 Flash Player 8 External API.
(http://www./cs/media/flashexternalapi.asp)

使 用 External API,可以實(shí)現(xiàn) ActionScript 和 C# 的雙向調(diào)用。其好處就在于每次調(diào)用時(shí)的參數(shù)和返回值都通過一個(gè) XML 文檔來傳遞,這樣就比 FSCommand 功能完善了很多。當(dāng)然在 C# 中,我們也需要聲明一下外部函數(shù)實(shí)現(xiàn)的對應(yīng)關(guān)系。

代碼片段:
Flash ActionScript 中聲明提供給 hosting application 調(diào)用的回調(diào)函數(shù):

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 進(jìn)行通信還是相當(dāng)方便的。

除此之外,我順便搜索到其他一些和 Flash 有關(guān)的不錯(cuò)的文章:

Flash and .NET with FlashRemoting
http://www./aspnet/FlashRemoting.asp

Multiple File Upload With Progress Bar Using Flash and ASP.NET
http://www./aspnet/FlashUpload.asp

Flash GUI for your exe using minimalistic approach (C++)
http://www./useritems/FlashGui.asp

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多