javascript
Flex与javascript通信
首先列出代碼部分,我們可以先嘗試的感受一下效果:
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
?
轉載于:https://www.cnblogs.com/Hero-Qiang/archive/2011/09/22/2185640.html
創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎總結
以上是生活随笔為你收集整理的Flex与javascript通信的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: IE6-IE9兼容性问题列表及解决办法_
- 下一篇: Spring JDBC最佳实践(2)