【问题标题】:C#: Loading an embeded swf into an flash activex without a temporary fileC#:在没有临时文件的情况下将嵌入式 swf 加载到 flash activex 中
【发布时间】:2010-11-21 14:17:55
【问题描述】:

我的项目要求我的最终应用程序完全包含在单个 exe 中。我已经使用 ILMerge(assmebly 合并实用程序)组合了可执行文件和 dll。我在 C# 应用程序中托管了一个 flash active x 控件,并且我已将需要加载到 flash 控件中的一个 swf 作为嵌入资源嵌入到 c# 应用程序中。

This question shows how to write the resource to a temporary file,但不适合为我的情况创建临时文件。这会产生一个问题,因为活动 x 控件的 loadMovie 方法只接受指向要加载的文件的字符串。

我的问题是:是否可以在不创建临时文件的情况下将嵌入的 swf 资源动态加载到 flash active x 控件中?

【问题讨论】:

  • 您提到了“loadMovie”,这意味着您使用的是 actionscript 2。如果您使用的是 actionscript 3,您可以使用 mxmlc 的 Embed 标签将要加载的 swf 嵌入到主 swf 中,编译器知道如何处理。我可能会创建一个 URLLoader 或 URLStream,将它的标头设置为接受二进制数据并告诉 c# 发送 swf 字节。完成后,您将创建一个 Loader 对象并使用 loadBytes 提供字节,从而将 bytearray 转换为 DisplayObject。这有意义吗?
  • loadMovie 方法是 flash active x 控件上的 C# 方法。

标签: c# flash resources activex embedded-resource


【解决方案1】:

您可以将 swf 文件添加到资源中,然后在 runtinme 将文件作为字节数组读取,然后将其发送到 function

System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(YourForm));
System.Byte[] data = (System.Byte[])(resources.GetObject("FileName"));

【讨论】:

    【解决方案2】:

    我最终使用的解决方案是将所有必需的 swf 文件打包到 wrapper swf 的库中。

    然后我将activex控件的movie属性设置为wrapper swf,并将activex控件上的embed标志设置为true。这会将 swf 直接嵌入到 activex 控件中。我从来没有在 C# 中进行任何加载,我只是在活动 x 控件上调用 play() 方法来初始化已嵌入的 swf 文件。

    基本上,如果我嵌入资源,则无需在 C# 中进行,我可以将其嵌入到 swf 中。然后我在 flash wrapper swf 中完成了所有的加载和卸载。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-12-21
      • 2020-11-08
      • 1970-01-01
      • 1970-01-01
      • 2013-03-04
      • 1970-01-01
      • 1970-01-01
      • 2013-07-05
      相关资源
      最近更新 更多