民初思韻網

加入收藏   設為首頁
選擇語言   簡體中文
你好,請 登陸 或 注冊
首頁 人文思韻 傳奇人物 歷史思潮 時代作品 話題討論 國民思韻 民初捐助 賬戶管理
  搜索  
    人文精神 >>> 技術的天空 溫和的思緒
字體    

C# flash想到調用函數解決辦法
C# flash想到調用函數解決辦法
網載     阅读简体中文版

  在VS2005工具箱中“選擇項”-> “COM”中首先選擇“Microsoft Multimedia Control 6.0”假如沒有這個“Microsoft Multimedia Control 6.0”,請先注冊“ MCI32.OCX”,然后在添加“Shockwave Flash Object”
新建一個工程,在工具箱上單擊右鍵,選擇"添加/移除項",在com組件列表中選擇Shockwave Flash Object,然后確定,加載Flash控件到工具箱

選擇工具箱上的Flash控件,放到窗體上并調整好大小

在Form_Load()中加入如下代碼

axShockwaveFlash1.Movie =@"D:\menu.swf"; //這里一定要寫絕對地址
axShockwaveFlash1.Menu =
false;          //是否在Flash動畫播放中關閉右鍵菜單
axShockwaveFlash1.Playing =
true;       //是否讓動畫播放


------------------------FLASH制作過程-----------------------
制作一個FLASH按鈕,并在按鈕上添加如下代碼
on (release) {
fscommand ("Send Action");
}
生成SWF文件
-----------------------------------------------------------------------

在FLASH控件的FSCommand事件中添加如下代碼
if(e.command ==
"Send Action")
MessageBox.Show(
"調用FLASH按鈕事件成功") ;

-----------------------------------------------------------------------

如果該事件處理函數的 EventArgs 為 e, 則有如下對應關系:

e.command -> flash 中調用 FSCommand 時的 command 參數;
e.args -> flash 中調用 FSCommand 時的 arguments 參數。

在 C# 中往 Flash 傳遞數值用 SetVariable 方法:

 

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

 

對應的,有一個 GetVariable 方法可以獲得 flash 中的變量值。

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

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

使用 External API,可以實現 ActionScript 和 C# 的雙向調用。其好處就在于每次調用時的參數和返回值都通過一個 xml 文檔來傳遞,這樣就比 FSCommand 功能完善了很多。當然在 C# 中,我們也需要聲明一下外部函數實現的對應關系。

代碼片段:
Flash ActionScript 中聲明提供給 hosting application 調用的回調函數:

 

import flash.external.ExternalInterface;
ExternalInterface.addCallback(
"loadAndPlayVideo", null, loadAndPlayVideo);

 

C# 中調用 Flash 的情形:

 

      flashPlayer.CallFunction("" +
          " name=\"loadAndPlayVideo\" returntype=\"xml\">
          <arguments><string>" + fileDialog.FileName +
          "");

 

在 ActionScript 中調用 C# 函數:

 

ExternalInterface.call("ResizePlayer",
       videoPlayer.metadata.width, videoPlayer.metadata.height);

 

在 C# 中聲明被 Flash 調用的函數:

 

flashPlayer.FlashCall +=
  new _IShockwaveFlashEvents_FlashCallEventHandler(flashPlayer_FlashCall);

 

在此,我們可以看到 C# 和 Flash 進行通信還是相當方便的。

除此之外,我順便搜索到其他一些和 flash 有關的不錯的文章:

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

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

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

 

轉自:http://hi.baidu.com/116389199/blog/item/72c4da5d139e5644faf2c0f8.html

 

2012-06-18 22:08

歡迎訂閱我們的微信公眾賬號!
春秋茶館訂閱號
微信號 season-tea(春秋茶館)
每天分享一篇科技/遊戲/人文類的資訊,點綴生活,啟迪思想,探討古典韻味。
  清末民初歷史人物  民初人物
傳奇人物傳記 風華絕代 物華天寶
此間選取古往今來傳奇人物的傳記與軼事,事不分大小,趣味為先,立意新穎,足以激越古今。
散文大家曠達風趣
梁實秋(1903年1月6日-1987年11月3日),號均默,原名梁治華,字實秋,筆名子佳、秋郎,程淑等,中國著名的散文家、學者、文學批評家、翻譯家,華人世界第一個研究莎士....
資助民初精神網
        回頂部     寫評論

[新一篇] 考研經驗談
 
評論集
暫無評論!
發表評論歡迎你的評論
昵稱:     登陸  註冊
主頁:  
郵箱:  (僅管理員可見)

驗證:   验证码(不區分大小寫)  
© 2011   民初思韻網-清末民初傳奇時代的發現與復興   版權所有   加入收藏    設為首頁    聯繫我們    1616導航