[转载]Flex与javascript通信 – 英雄小强 – 博客园.
首先列出代码部分,我们可以先尝试的感受一下效果:
1.Flex代码部分:文件名为Flex_JavaScript.mxml
<!--?xml version="1.0" encoding="utf-8"?--> <![CDATA[ import mx.controls.Alert; public function init():void { ExternalInterface.addCallback("FlexMethod",FlexMethod); } private function FlexMethod():void { Alert.show("这是Flex的Alert方法"); } protected function FlexMethod_clickHandler(event:MouseEvent):void { // TODO Auto-generated method stub FlexMethod(); } protected function FlexCallJS_clickHandler(event:MouseEvent):void { // TODO Auto-generated method stub ExternalInterface.call("JSMethod","这是Javascript的Alert方法"); } ]]> <!-- Place non-visual elements (e.g., services, value objects) here -->
2.JavaScript代码部分:将以下代码添加到index.template.html里面(为什么要添加到index.template.html里面呢?因为index.template.html里面的代码会自动添加到Flex自动生成的HTML文件中)。
<script type="text/javascript">// <![CDATA[ function JSMethod(info) { alert(info); } function JSCallFlex() { document.getElementById("Flex_Javascript").FlexMethod(); } // ]]></script> <input onclick="JSCallFlex()" type="button" value="Javascript调用Flex" /> <input onclick="JSMethod('这是Javascript的Alert方法')" type="button" value="Javascript的Alert方法" />
3.修改Flash的大小,否则看不到HTML里面添加的按钮Button,我这里改为400X300
swfobject.embedSWF("${swf}.swf", "flashContent", "400", "300", swfVersionStr, xiSwfUrlStr, flashvars, params, attributes);
这里稍微解释一下,不多说,你懂的:
1.Flex里面使用ExternalInterface.call(“Js函数名称”,参数)进行调用JavaScript方法,其返回的值就是Js函数所返回的值。
2.在init方法中使用ExternalInterface.addCallback(“注册的方法名”,As中的函数名)进行注册,“注册的方法名”可以再javascript中直接调用
3.在js中,就可以用document.getElementById(“Flash在Html中的ID”).注册的方法名(参数)进行调用,当然,默认”Flash在Html中的ID”就是Flex文件的名称,例如,我们这里就是Flex_Javascript,因为我们的Flex文件就是Flex_Javascript.mxml
注:本文章部分内容可能引用于网络,本人进行修改或注释,希望能够帮到更多的人。 作者 姓名:英雄小强 邮箱:hero88821@qq.com QQ :659406804 MSN:hero821@msn.cn