首先,无论是Flex调用js,仍是js调用 Flex浏览器
须要引入的包(Flex包)import flash.external.*; app
其次,简单说说相互之间如何调用函数
一、Flex程序调用js的方法 :flex
这个相对简单,以下spa
Flex中:code
public function FlexCallJs(){ ExternalInterface.call("FlexJS"); // flex 直接调js里的方法 }
Js中:xml
function FlexJS(){ alert("flex call js"); }
二、Js调用Flex中的方法 :对象
这个相对而言注意的多些,以下get
Flex中:flash
public function callFlexback(){ //该函数必须是先启动,即该函数的做用是监听来自js中的调用 能够放在Application 中的creationComplete //<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" creationComplete="callFlexback()" > ExternalInterface.addCallback("jsCallFlex",jsCallFlex); //js调flex入口,addCallback()函数前边是js调用该flex的入口,然后边的参数才是调用flex程序中真正的函数<习惯将两个代码写成同样> } //真正的供js调用的Flex里的函数 public function jsCallFlex():void{ Alert.show("@!@"); }
JsP中:
<div class="map1" style="display:block"> <object id="object" classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=7,0,19,0" width="990" height="222"> <param name="movie" value="common/FlexJsTest.swf" /><!-- 彷佛这个用不到啊 --> <param name="quality" value="high" /> <param name="wmode" value="transparent" /> <embed id="embedid" src="common/FlexJsTest.swf" quality="high" pluginspage="http://www.macromedia.com/go/getflashplayer" type="application/x-shockwave-flash" width="990" height="600" wmode="transparent"></embed> </object> </div> //经过opject对象引入flex编译的哦swf文件 src是相关的路径 其中最主要的东西是embedid,须要同过这个id为IE或者非IE浏览器获取该flex中的方法
Js中:
function jscallflex(){ var x; if(navigator.appName.indexOf("Microsoft") != -1){//针对IE浏览器 x=document.getElementById('embedid').jsCallFlex(); } else {//针对非IE浏览器 x=document.embeds['embedid'].jsCallFlex(); } }