Flex Javascript交互实现代码

Flex Javascript交互实现代码
2010年09月27日
  Flex2010-09-27 17:32:08阅读3评论0 字号:大中小 订阅 键字:ExternalInterface
  所用类库:SWFObject
  /**
  * Flex调用Javascript函数
  * @params functionName:String Javascript函数名称
  * @params ...params Javascript函数参数
  * @return 返回Javascript函数的return内容
  **/
  ExternalInterface.call(functionName:String, ...params);
  main.mxml
  
  
  
  
  
  
  
  /**
  * 被Flex调用的 myfunc函数
  * @params item 对象
  * @return results 返回一个对象给Flex
  **/
  function myfunc(item) {
  alert(item.name+"--"+item.address);
  //创建对象
  var results = {};
  results .name= "dante";
  results .age = 23;
  results .sex = "man";
  return obj;
  }
  /**
  * Javascript调用Flex函数
  * @params functionName:String Javascript调用Flex函数名
  * @params closure:Function Flex将要调用的函数
  * @return void
  **/
  ExternalInterface.addCallback(functionName:String, closure:Function);
  main.mxml
  
  
  
  FLEX交互
  //params.flashvars = "xmlPath=hello&name=dante";
  var item:Object = Application.application.parameters;
  trace("xmlPath:"+item.xmlPath ,"name:" + item.name);
  }
  /**
  * saveData
  * @params item:Object java script 传过来的参数
  * @return void
  **/
  private function saveData(item:Object):void {
  trace("javascript调用Flex函数成功!");
  nameTxt.text = item.name;
  }
  ]]-->
  
  
  
  index.html
  HTML内嵌swf文件,我用的SWFObject,个人认为是一个很好的类库,简化了包含代码。
  注意 :javascript调用Flex的函数,必须要获得swf的ID,可以通过document.getElementById(),也可以使用swfobject.getObjectById()。
  
  
  
  
  
  SWFObject
  flex的方法
  attributes.id = "swf01";
  //内嵌swf文件,这个embedSWF方法,我在最后的补充会说下
  swfobject.embedSWF("swf/main.swf","myPanel","300", "200","9.0.0","swf/expressInstall.swf",flashvars,pa rams,attributes);
  /**
  * 调用Flex函数
  * @return void
  **/
  function callFlex(item) {
  //通过ID获得swf,也可以使用document.getElementById();
  //var swf = document.getElementById("swf01");
  var swf = swfobject.getObjectById("swf01");
  var item = {};
  item.name = document.getElementById("nameTxt").value;
  //调用Flex函数,传参item:Object
  swf.saveD(item);
  }
  // -->
  
  
  
  Flex content
  
  
  Name
  
  
  
  
  Call Flex
  
  
  
  
  
  
  OK,两种交互的方式已经告诉大家了,快试试吧。
  SWFObject使用补充:
  swfobject.embedSWF()
  swfobject.getObjectById("swfID")
  swfobject.removeSWF("swfID")
  一.swfobject.embedSWF:
  内 嵌swf文件,这个函数的参数比较多swfobject.embedSWF(swfUrl, id, width, height, version,expressInstallSwfurl, flashvars,params, attributes),各个参数具体功能如下:
  swfUrl(String,必须的)指定SWF的URL。
  id(String,必须的)指定将会被Flash内容替换的HTML元素(包含你的替换内容)的id。
  width(String,必须的)指定SWF的宽。
  height(String,必须的)指定SWF的高。
  version(String,必须的)指定你发布的SWF对应的Flash Player版本(格式为:major.minor.release)。
  expressInstallSwfurl(String,可选的)指定express install SWF的URL并激活Adobe express install。
  flashvars(String,可选的)用name:value对指定你的flashvars。
  params(String,可选的)用name:value对指定你的嵌套object元素的params。
  attributes(String,可选的)用name:value对指定object的属性。
  注意 :在不破坏参数顺序的情况下,你可以忽略可选参数。如果你不想使用一个可选参数,但是会使用后面的一个可选参数,你可以简单的传入false作为参数的 值。对flashvars、params和 attributes这些JavaScript对象来说,你也可以相应的传入一个空对象{}。
  二.swfobject.getObjectById("swfId")
  通过swfid获得swf对象,通过该对象可调用flex函数。
  三.swfobject.removeSWF("swfId")
  通过swfId删除swf。
  注意 :删除swf这里需要提醒下,因为embedSWF是替换标签,而不是填充。比如上面的例子Flex content,如果执行了swfobject.removeSWF后,想重新添加SWF必须要重新创建或者更改embedSWF的第二个参数更改替换新的标签ID。因为在这里SWF替换了调了
  
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值