使用ExternalInterface调用JS方法-传参数、有返回值!

生成flash的mxml文件源码如下:
 
<?xml version="1.0" encoding="utf-8"?>
<s:Application xmlns:fx="http://ns.adobe.com/mxml/2009"
      xmlns:s="library://ns.adobe.com/flex/spark"
      xmlns:mx="library://ns.adobe.com/flex/mx" minWidth="955" minHeight="600">
 <fx:Declarations>
  <!-- 将非可视元素(例如服务、值对象)放在此处 -->
 </fx:Declarations>
 <fx:Script>
  <![CDATA[
   import mx.controls.Alert;
  
   private function hello_world():void{
    var msg:String=ExternalInterface.call("js_hello_world","使用ExternalInterface调用JS方法","传参数、有返回值");
    Alert.show(msg);
   }
  ]]>  
 </fx:Script>  
 <s:Button id="btn" label="Button" click="hello_world()"/>
</s:Application> 
 
 
 
插入flash的html文件:
 
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<title>使用ExternalInterface调用JS方法-传参数、有返回值!</title>
<script type="text/javascript" src="swfobject.js"></script>
<script type="text/javascript">
function js_hello_world(msg,str){
 return msg+"-"+str;
}
</script>
</head>

<body>
<div id="flash"></div>
<script type="text/javascript">
swfobject.embedSWF("js2.swf", "flash", "400", "325", "11.1.0", "playerProductInstall.swf", {});
</script>

<embed src="js2.swf" quality="high" pluginspage="http://www.macromedia.com/go/getflashplayer" type="application/x-shockwave-flash" width="400" height="325"></embed>

<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="400" height="325">
  <param name="movie" value="js2.swf" />
  <param name="quality" value="high" />
</object>
</body>
</html>
 
注:object方式无法调用JS方法,embed方式在ie下无法调用JS方法
 
参考:http://blog.csdn.net/xuhuanchao/article/details/4900859