[转载]JavaScript、Flex、Air之间的相互通信的研究

文章转自:http://blog.csdn.net/txiejun/article/details/5675191 

 

在Air中嵌入的HTML控件中打开一个新的浏览器窗口是不行的,而通过Air本身的navigateToURL可以做到这点;为了能够实现在Air的HTML控件中打开一个新的浏览器窗口,我考虑到了使用JavaScript来作为中间媒介;通过HTML中的对象访问JavaScript函数,然后JavaScript函数在访问Air中的函数来调用Air的navigateToURL方法实现以上目的;可能这种方式不是最优解决方案,不过通过这几天的研究倒是把JavaScript、Flex、Air之间的相互通信有了更深入的了解;为了不浪费,所以写下来供以后参考,好了,开始吧;

    1.首先需要建立两个工程,一个名叫AppTest的Flex工程,另一个叫做AirWeb的Air工程;为了减少拷贝文件的操作,可以把AppTest工程的output路基设置到Air的bin-debug路径下(比如我目前的AppTest工程发布路径为:D:/workspace/AirWeb/bin-debug/AppTest.html),这样在启动Air的时候,就很方便的调用AppTest中生存的资源了;

    2.AppTest 工程的内容如下:

   

[java]  view plain copy print ?
 
  1. "1.0" encoding="utf-8"?>     
  2. "http://www.adobe.com/2006/mxml" width="1000" height="800"    
  3.      layout="absolute" creationComplete="init()" fontSize="13">     
  4.          
  5.              
  6.          
  7.              
  8.     "airtext" text="txiejun's Air test!" x="10" y="10">  
  9.          
  10.     "html" y="50" location="AppTest.html"  width="800" height="650">          
  11.          
  12.     "216" y="10" label="airCallJs" click="airCallJs()"/>  
  13.       
  14.    

 

 

3.AppTest.html 页面中的重要内容:

    

[javascript]  view plain copy print ?
 
  1. "en">  
  2.   
  3. //...此处省略了一些代码  
  4. "JavaScript" type="text/javascript">  
  5.   
  6.   
  7. "no" >  
  8.   
  9.     "text" id="text"  value="It's a javascript text!"/>   
  10.     "button" value="jsCallApp" οnclick="jsCallApp()"/>   
  11.     "button" value="jsCallAir" οnclick="onJsCallAir()"/>      
  12.   
  13. //...此处省略了一些代码  
  14.   
  15.   

 

 

4.AirWeb工程中的代码:

   

[java]  view plain copy print ?
 
  1. "1.0" encoding="utf-8"?>     
  2. "http://www.adobe.com/2006/mxml" width="1000" height="800"    
  3.      layout="absolute" creationComplete="init()" fontSize="13">     
  4.          
  5.              
  6.          
  7.              
  8.     "airtext" text="txiejun's Air test!" x="10" y="10">  
  9.          
  10.     "html" y="50" location="AppTest.html"  width="800" height="650">          
  11.          
  12.     "216" y="10" label="airCallJs" click="airCallJs()"/>  
  13.    

 

 

以上的代码分别实现了JavaScript于air的互相通信和JavaScript和flex app的互相通信,因此要实现,air和flex app的通信也就很简单了,借助JavaScript作为中间介质,也就实现了air和flex app的互相通信;

你可能感兴趣的:(flex,javascript,java)