2012-07-28 57 views
1

我有一個c#應用程序,它承載了一個Flash應用程序(使用AxInterop.ShockwaveFlashObjects.dll中的Shockwave Flash Object)。
我可以使用flash的「fscommand」將命令從Flash應用程序發送到我的c#應用程序。
現在我需要從c#應用程序發送命令(如設置flash文本)到flash應用程序,我可以這樣做嗎?怎麼樣?如何將命令從c#應用程序發送到託管的adobe flash應用程序?

+0

應該可以通過[ExternalInterface](http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/flash/external/ExternalInterface.html?filter_flash=cs5&filter_flashplayer=10.2&filter_air=2.6) – 2012-07-28 08:58:06

+0

@GeorgeProfenza:感謝您的回覆,是否有任何使用ExternalInterface的c#示例? – VirtualWorld 2012-07-28 09:21:07

+2

試試[這](http://blog.another-d-mention.ro/programming/communicate-betwen-c-and-an-embeded-flash-application/) – 2012-07-28 10:10:09

回答

3

有幾種方式來實現:

  1. 正如喬治Profenza指出,使用ExternalInterface是一個簡單的實現使雙向通信。它可以來回處理一些原始數據,並且非常適合於每次調用都涉及少量數據的託管Flash通信。但是,關於可以發送和接收多少數據,有size limit

  2. 如果大小確實重要,XmlSocket將是另一種允許有狀態雙向通信的選項。在C#結束時,您可以使用snippet like this創建XmlSocket服務器,並讓主機應用程序託管服務器,然後讓Flash在啓動時連接到服務器。沒有大小限制,但是您必須將每個調用都編碼爲XML,所以在兩端都要序列化和反序列化數據。多年來,我在一些獨立的.NET基礎Winform應用程序中成功使用了這種技術。

  3. 第三個選項是利用FlashRemoting。它類似於上述選項中使用的策略,但「服務器」將是一個Flash Remoting服務器,它能夠使用AMF與Flash進行通信。這種方法的主要優勢在於,您不必編寫任何序列化/解串器,因爲服務器和Flash會爲您處理這些問題,並且也沒有大小限制,它非常適合您有各種各樣的場景具有複雜數據結構的調用。但是,集成服務器的前期成本。有open-source solutionclosed-source solutions

第三個選項可能不會被探索,因爲大多數人會將它用於Web應用程序。儘管我沒有把它作爲Windows窗體應用程序集成的第一手經驗,但我個人偏好第三種選擇。我喜歡它,因爲它有可能輕鬆地將應用程序轉換爲基於Web的應用程序,並且它還支持複雜的數據結構,而不會花費數據序列化。

+0

很好解釋和記錄+1 – 2012-07-28 14:13:07

相關問題