天天看點

FLEX與C#互動概要

FLEX與C#互動概要

2010年07月21日

  準備工作

  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);