Flex与Javascript交互 - dante_k7的专栏 - CSDN博客

来源:百度文库 编辑:神马文学网 时间:2024/04/20 16:45:43

Flex与Javascript交互 收藏
关键字:ExternalInterface

所用类库:SWFObject

 

/**

 * Flex调用Javascript函数

 * @params  functionName:String   Javascript函数名称

 * @params ...params    Javascript函数参数

 * @return  返回Javascript函数的return内容

 **/

ExternalInterface.call(functionName:String, ...params);

 

main.mxml

view plaincopy to clipboardprint?
  
      layout="absolute">  
  
      
  
   
  
 

   layout="absolute">

 

 


 

index.html

view plaincopy to clipboardprint?
/** 
 * 被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;  

/**
 * 被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

view plaincopy to clipboardprint?
  
    layout="absolute" initialize="initApp()">  
  
      
  
    
 

 layout="absolute" initialize="initApp()">

 

 

 

index.html

HTML内嵌swf文件,我用的SWFObject,个人认为是一个很好的类库,简化了包含代码。
注意 :javascript调用Flex的函数,必须要获得swf的ID,可以通过document.getElementById(),也可以使用swfobject.getObjectById()。

view plaincopy to clipboardprint?
  
  
  
  
     
SWFObject  
  
  
  

  
   
Flex content
  
      
          
              
              
          
          
              
          
   
Name
  
                Call Flex  
           
  
  
  
 




  
SWFObject




   
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必须要重新创建