从C#调用ActionScript 3函数

我在Windows窗体中嵌入了Flash影片(使用“Visual Studio 8附带的Shockwave Flash对象”组件。)Flash影片是使用Flash CS4创建的,并使用ActionScript 3。

是否可以使用C#调用返回值的Flash影片中的ActionScript函数?

另外,我的Flash电影是否可以在主应用程序中调用返回值的C#函数?

为了使ActionScript函数可以从Flash播放器的主机调用,您必须使用ExternalInterface.addCallback函数,例如:

ExternalInterface.addCallback("testCallback", function (text : String) : String { var helloText : String = "Hello, " + text; myTextField.text = helloText; return helloText; }); 

要在C#中使用Windows窗体应用程序调用此函数,必须使用Flash播放器组件公开的CallFunction方法。 该方法有一个字符串参数,该参数必须包含描述调用的XML; 它返回一个字符串,其中包含一个描述返回值的XML。 使用上面的示例,这将是调用testCallback函数的方法:

 textBox1.Text = flash.CallFunction("" + textBox1.Text + ""); 

假设您的文本框(textBox1)包含文本“World”,在执行上面的代码时,它将包含文本“Hello,World”。

如果你想从Flash调用C#代码,故事就是这样的:你必须为你的Flash播放器的FlashCall事件定义一个事件处理程序。 然后,您将使用ActionScript中的以下类型的调用:

 ExternalInterface.call("MyCSharpFunction", 17); 

这将使Flash播放器引发FlashCall事件并调用您的事件处理程序。 处理程序接收的事件参数有一个名为“request”的公共字段,其类型为字符串。 请求字段包含一个XML,用于描述从Flash进行的调用。 对于上面使用的示例,它看起来像这样:

 17 

如果您希望返回一个值,您在FlashCall事件处理程序中所要做的就是在事件处理程序返回之前调用Flash播放器的SetReturnValue方法,并使用描述返回值的XML传递字符串,例如:

 Works like a charm! 

ExternalInterface.addCallback(functionName:String,closure:Function):void注册一个可从其容器中调用的actionscript方法。

我不确定它是否能够返回一个值。 我的想法是,这不起作用。 如果是这种情况,您可以再执行另一个ExternalInterface.call,它将容器作为参数发送给您。

我不知道如何实际从C#进行调用,但我已经看到我的一位同事完成了我们正在进行的闪存安装项目,所以我知道它可能……有些怎样!

请参阅下面给出的链接,您将找到适合您的问题的正确解决方案。 您的要求将履行。 单击她以获取解决方案