准备工作
Flex方面:
1、打开index.template.html,并在js脚本里填入方法: function invoke(name) { if(arguments.length == 1) return eval("window.external." + name + "()"); var tmp = new Array(); for(var i=1;iFlex Builder生成的HTML文件.html"); // 前提是FLEX生成的HTML等文件都放在C#的生成文件夹DEBUG中
3、在类上做元数据标签[ComVisible(true)]
====================================
开始调用:
FLEX->C#
flex:
ExternalInterface.call("invoke","C#方法名",参数1,参数2…………); // 不返回值
var str : String = ExternalInterface.call("invoke","C#方法名",参数1,参数2…………); // 返回值
C#
写一public方法
public void C#方法名(string args) {} // 不返回值
public string C#方法名(string args) {} // 返回值
public string C#方法名( ) {} // 无参数
注意:由于invoke方法的定义,故C#方法只有一个参数或不带参,FLEX传递过来的变量自动会变成以"|"形式隔开的字符串。
可以用Split方法分开操作
C# -> FLEX
flex:
在一开始,如程序的initialize事件init()中做
private function init() : void {
ExternalInterface.addCallback("onTest",test); // onTest对C#公开的方法,test对FLEX执行的方法
}
private function test() : void {
// 执行的内容,无返回值
}
或
private function test() : void {
// 执行的内容,有返回值
}
C#:
var objs = new object[] {"onTest",2,3}; // 第一个为对应FLEX的方法名,后面为参数
wb.Document.InvokeScript("call", objs); // 调用FLEX方法,注意由于call方法的设计,到FLEX后的参数同样自动变为以"|"隔开
同样可以有返回值接收到
var str = wb.Document.InvokeScript("call", objs);
Flex方面:
1、打开index.template.html,并在js脚本里填入方法: function invoke(name) { if(arguments.length == 1) return eval("window.external." + name + "()"); var tmp = new Array(); for(var i=1;iFlex Builder生成的HTML文件.html"); // 前提是FLEX生成的HTML等文件都放在C#的生成文件夹DEBUG中
3、在类上做元数据标签[ComVisible(true)]
====================================
开始调用:
FLEX->C#
flex:
ExternalInterface.call("invoke","C#方法名",参数1,参数2…………); // 不返回值
var str : String = ExternalInterface.call("invoke","C#方法名",参数1,参数2…………); // 返回值
C#
写一public方法
public void C#方法名(string args) {} // 不返回值
public string C#方法名(string args) {} // 返回值
public string C#方法名( ) {} // 无参数
注意:由于invoke方法的定义,故C#方法只有一个参数或不带参,FLEX传递过来的变量自动会变成以"|"形式隔开的字符串。
可以用Split方法分开操作
C# -> FLEX
flex:
在一开始,如程序的initialize事件init()中做
private function init() : void {
ExternalInterface.addCallback("onTest",test); // onTest对C#公开的方法,test对FLEX执行的方法
}
private function test() : void {
// 执行的内容,无返回值
}
或
private function test() : void {
// 执行的内容,有返回值
}
C#:
var objs = new object[] {"onTest",2,3}; // 第一个为对应FLEX的方法名,后面为参数
wb.Document.InvokeScript("call", objs); // 调用FLEX方法,注意由于call方法的设计,到FLEX后的参数同样自动变为以"|"隔开
同样可以有返回值接收到
var str = wb.Document.InvokeScript("call", objs);