乡下人产国偷v产偷v自拍,国产午夜片在线观看,婷婷成人亚洲综合国产麻豆,久久综合给合久久狠狠狠9

  • <output id="e9wm2"></output>
    <s id="e9wm2"><nobr id="e9wm2"><ins id="e9wm2"></ins></nobr></s>

    • 分享

      c# 與flash

       昵稱9841599 2012-09-27

      1.加載flash組件

      一、基本原理及過程

      Flash通過ExternalInterface類與容器應(yīng)用程序進(jìn)行通信。為此,ExternalInterface類提供兩個(gè)靜態(tài)屬性和兩個(gè)靜態(tài)方法。

      ExternalInterface.call(“函數(shù)名”,[參數(shù)…])方法執(zhí)行容器應(yīng)用程序的代碼,該方法至少需要一個(gè)字符串參數(shù)來指定要調(diào)用的函數(shù)名,其它任何參數(shù)將作為參數(shù)被傳遞給被調(diào)用函數(shù)。在除瀏覽器外的其它容器中,此方法調(diào)用將導(dǎo)致flash player ActiveX控件的flashcall事件發(fā)生。Flash Player 將指定的函數(shù)名及所有參數(shù)序列化為一個(gè) XML 字符串。容器可以在事件對象的 request 屬性中訪問該信息,并用它來確定如何執(zhí)行它自己的代碼。為了將值返回 ActionScript,容器代碼調(diào)用 ActiveX 對象的 SetReturnValue() 方法,并將結(jié)果(序列化為一個(gè) XML 字符串)作為該方法的參數(shù)進(jìn)行傳遞?!陨险詭椭臋n

      其基本過程為:flash調(diào)用—>flash自動(dòng)將參數(shù)打包為xml—>將xml傳遞給C# —>C#解析參數(shù)得到函數(shù)名與參數(shù)值—>執(zhí)行C#函數(shù)—>將返回值打包為xml—>將xml文件發(fā)送回flash—>flash自動(dòng)解析xml得到返回值

      從容器中調(diào)用 ActionScript 代碼必須執(zhí)行兩項(xiàng)操作:向 ExternalInterface 類注冊函數(shù),然后從容器的代碼調(diào)用它。在運(yùn)行于臺式機(jī)應(yīng)用程序中調(diào)用 ActionScript 函數(shù)時(shí),必須將已注冊的函數(shù)名及所有參數(shù)序列化為一個(gè) XML 格式的字符串。然后,將該 XML 字符串作為一個(gè)參數(shù)來調(diào)用 ActiveX 控件的 CallFunction() 方法,以實(shí)際執(zhí)行該調(diào)用。

      其基本過程為:flash中注冊函數(shù)——將要調(diào)用的函數(shù)名、參數(shù)等信息打包為xml—>將xml傳遞到flash中執(zhí)行調(diào)用—>執(zhí)行ActionScript函數(shù)—>flash自動(dòng)將結(jié)果打包為xml—>將結(jié)果xml傳遞回C# —>C#解析xml得到返回值

      可見,flash與C#通信是通過特定格式的xml文件進(jìn)行的,因此為了實(shí)現(xiàn)通信,C#必須實(shí)現(xiàn)一下功能:識別該xml格式以得到flash發(fā)送來的信心,將需要傳送給flash的信息打包成flash能識別的xml格式。為了使用方便我們可以設(shè)計(jì)一個(gè)代理類專門負(fù)責(zé)數(shù)據(jù)的解析與打包工作,這樣我們就可以透明的使用該代理類來實(shí)現(xiàn)flash與C#間的互相調(diào)用。

      在flash的示例中有一個(gè)IntrovertIM_CSharp項(xiàng)目較好的實(shí)現(xiàn)了代理的編寫,一般情況下,使用該示例中的ExternalInterfaceProxy類足以滿足要求,因此方便起見我也直接采用了該代理類。

      該類的使用非常簡單,通過將flash控件作為參數(shù)傳遞給該類的構(gòu)造函數(shù),我們就可以建立一個(gè)給控件的代理,簡單的響應(yīng)代理的ExternalInterfaceCall事件及使用代理類的Call()方法就能實(shí)現(xiàn)與flash通信,中間的數(shù)據(jù)轉(zhuǎn)換工作完全由代理透明的實(shí)現(xiàn),用戶無需關(guān)心。

      其它語言及程序課根據(jù)上面原理編寫自己的代理類來實(shí)現(xiàn)數(shù)據(jù)的解析與打包工作。

      二、配置vs

      第一步C#添加組件
      打開VS2005-工具-選擇工具箱項(xiàng)-COM組件-選擇Shockwave Flash Object-確定
      添加好組件往場景上拖放,如果提示注冊需求注冊
      c# 注冊控件-在運(yùn)行輸入-回車(flash9f.ocx這個(gè)文件以系統(tǒng)中實(shí)際文件為準(zhǔn)。)
      regsvr32 c:/windows/system32/macromed/flash/flash9f.ocx
      或者regsvr32 c:/windows/system32/macromed/flash/flash10a.ocx(最好找到這個(gè)目錄看下自己的flash的版本,找到ocx后綴的文件。)

      本文對于flash文件嵌入到winForm窗體后,測試對于flash的命令是否能正確獲取其命令對應(yīng)的指令及參數(shù),已及對于兩者交互的方法的demo

      一、程序創(chuàng)建

      1、 winForm程序需要添加flash控件,用于支持flash文件的播放。

      1. 添加工具箱外部flash ocx控件,C:\WINDOWS\system32\Macromed\Flash\中的xxx.Ocx
      2. 添加后工具箱顯示了falsh的”FlashFactory”,“ShockwaveFlash”兩個(gè)新控件,如果Shockwave Flash無法拖拽至winForm中(提示注冊失?。?,此原因是沒有對應(yīng)的” Microsoft Multimedia Control, version 6.0”控件,同理添加C:\WINDOWS\system32\MIC32.ocx至工具箱即可
      3. 添加Shockwave Flash Object控件至界面,設(shè)置播放的swf文件路勁即可

      2、 WinForm與flash交互方式

      1. flash命令觸發(fā)事件FSCommand

      設(shè)置對應(yīng)控件的FSCommand事件的相應(yīng)方法

      圖解:

      1. 使用 External API,可以實(shí)現(xiàn)falsh ActionScript 和 .net 的雙向調(diào)用

      利弊分析:使用A方式FSCommand參數(shù)只能傳遞一個(gè),如果需要傳遞多個(gè)就需要在調(diào)用方(flash中)用字符串組合多個(gè)參數(shù),傳回后被調(diào)用方分解參數(shù),局限性明顯。使用External API可以實(shí)現(xiàn)雙向調(diào)用,傳參與返回值以XML文檔格式傳遞。

      圖解:

      Flash ActionScript 中聲明提供給 hosting application 調(diào)用的回調(diào)函數(shù)import flash.external.ExternalInterface;

      ExternalInterface.addCallback("setMessage", null, setMessageArgs);

      .net程序端

      1、 Flash控件的CallFunction方法調(diào)用對于的flash提供的方法

      2、 Falash控件的FlashCall事件響應(yīng)flash的方法調(diào)用

      二、測試結(jié)果

      1、FSCommand方式運(yùn)行,查看點(diǎn)擊對于falsh命令出發(fā)的區(qū)域,可以在FSCommand事件的相應(yīng)方法中查看到對應(yīng)事件參數(shù)。

      界面以MessageBox顯示參數(shù)

      2、Flash Player 8 External API的方式與WinForm交互

      運(yùn)行結(jié)果

      三、結(jié)論

      對于winForm中嵌入的flash,可以正確觸發(fā)對應(yīng)命令,使用FSCommand只能在flash單一參數(shù)傳遞給程序,使用方法調(diào)用則可以傳遞多參數(shù),且可以實(shí)現(xiàn)flash與程序的相互調(diào)用。

      附件下載:http://files.cnblogs.com/dirkcloud/FlashCommandTest.rar

        本站是提供個(gè)人知識管理的網(wǎng)絡(luò)存儲空間,所有內(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ā)表

        請遵守用戶 評論公約

        類似文章 更多