当前位置:  开发笔记 > 编程语言 > 正文

从C#调用ActionScript 3函数

如何解决《从C#调用ActionScript3函数》经验,为你挑选了1个好方法。

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

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

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



1> Vojislav Sto..:

为了使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!

推荐阅读
wangtao
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有