【问题标题】:How to send commands from the c# application to its hosted adobe flash application?如何将命令从 c# 应用程序发送到其托管的 adobe flash 应用程序?
【发布时间】:2012-07-28 08:30:41
【问题描述】:

我有一个 c# 应用程序,它托管(使用 AxInterop.ShockwaveFlashObjects.dll 中的 Shockwave Flash 对象)一个 flash 应用程序。
我可以使用 flash 的“fscommand”将命令从 flash 应用程序发送到我的 c# 应用程序。 现在我需要从 c# 应用程序向 Flash 应用程序发送命令(比如设置 Flash 文本),我可以这样做吗?怎么样?

【问题讨论】:

  • 应该可以通过ExternalInterface
  • @GeorgeProfenza:谢谢回复,有没有使用ExternalInterface的c#示例?
  • 试试this
  • @GeorgeProfenza 非常感谢

标签: c# flash


【解决方案1】:

有几种方法可以实现:

  1. 正如 George 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

可能不会探索第 3 个选项,因为大多数人会将其用于 Web 应用程序。我个人喜欢第三种选择,尽管我没有将它集成为 Windows 窗体应用程序的第一手经验。我喜欢它,因为它具有将应用程序轻松转换为基于 Web 的应用程序的潜力,并且它还支持复杂的数据结构,而无需花费数据序列化。

【讨论】:

  • 很好的解释和记录+1
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-01-20
  • 2012-12-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-09-01
相关资源
最近更新 更多