首先列出代码部分,我们可以先尝试的感受一下效果:

1.Flex代码部分:文件名为Flex_Javascript.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
="400" minHeight="300" backgroundColor="#0119FD" creationComplete="init()">
<s:layout>
<s:VerticalLayout horizontalAlign="center"/>
</s:layout>

<fx:Script>
<![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方法");
}

]]>
</fx:Script>

<fx:Declarations>
<!-- Place non-visual elements (e.g., services, value objects) here -->
</fx:Declarations>
<s:Button width="200" height="30" label="Flex调用Javascript" click="FlexCallJS_clickHandler(event)"
color
="#FE0101" fontFamily="楷体" fontSize="16" fontWeight="bold"/>
<s:Button width="200" height="30" label="Flex的Alert方法" click="FlexMethod_clickHandler(event)"
color
="#FE0101" fontFamily="楷体" fontSize="16" fontWeight="bold"/>
</s:Application>

2.Javascript代码部分:将以下代码添加到index.template.html里面(为什么要添加到index.template.html里面呢?因为index.template.html里面的代码会自动添加到Flex自动生成的HTML文件中)。

<script type="text/javascript">
function JSMethod(info) {
alert(info);
}
function JSCallFlex() {
document.getElementById("Flex_Javascript").FlexMethod();
}
</script>

<input type="button" value="Javascript调用Flex" onclick="JSCallFlex()"/>
<input type="button" value="Javascript的Alert方法" onclick="JSMethod('这是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




 

posted on 2011-09-22 23:10  英雄小强  阅读(1359)  评论(1编辑  收藏  举报