2009-08-21 60 views
2

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

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

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

+0

你提到“的loadMovie”,这意味着你使用的动作2.如果您使用的是actionscript 3,您可以使用嵌入标记mxmlc嵌入swf以加载到主swf中,编译器知道该如何处理。我可能会创建一个URLLoader或一个URLStream,将它的头部设置为接受二进制数据并告诉c#发送swf字节。当完成时,您将创建一个Loader对象并使用loadBytes提供字节,从而将bytearray转换为DisplayObject。这是否有意义? – 2009-08-30 14:42:52

+0

loadMovie方法是flash active x控件上的C#方法。 – JohnU 2009-09-01 06:02:35

回答

1

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

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

基本上,如果即时通讯嵌入资源,没有必要在C#中完成,我可以将它嵌入到swf中。然后,我做了所有我的装载和卸载闪存包装瑞士法郎。

1

您可以将SWF文件添加到资源,然后在runtinme读取文件的字节数组发送到这个function

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