熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> Java編程 >> JSP教程 >> 正文

js調用Flex中的方法並向flex中傳參及flex調用js示例

2013-11-15 12:14:07  來源: JSP教程 

  首先有了一個swf文件testswf同時也有一個自動生成的html文件testhtml
然後在另外一個文件testjsp中通過iframe引入了testhtml即引入了swf

現在想要在testjsp中向flex傳參並調用flex中的方法我采用的方法是
首先在jsp中寫一個調用flex的方法如下

復制代碼 代碼如下:
function initSWF(){
//得到swf的object
var obj = windowframes["rightframe"]ReverseQuery; //rightframe是iframe的名字ReverseQuery是在testhtml中引入swf做object的id
//調用它的方法
var start = "<%=startPoint%>";
var end = "<%=endPoint%>";
objshowParams(startend);
}
在html中有方法
/*在flex中只能調用本頁面的js方法*/
function initSWF(){
parentinitSWF();
}
在flex有如下方法
public function showParams(start:Stringend:String):void{
Alertshow(start);
Alertshow(end);
}

  
這時需要建立一個打開他們之間通信的橋梁了在flex的初始化時要使用
ExternalInterfaceaddCallback("showParams"showParams); //前者是它暴露給js的方法名後者是它在flex中的方法名
這樣理論上就可以實現調用了將initSWF方法放在頁面的onload方法中即可實現

但是產生一個問題如果flex在頁面中沒有加載成功時會報找不到對象的錯誤因此需要我們在確保swf文件加載完成後再調用swf中的方法
但監聽它加載完成顯然有點浪費感情於是我們采用的策略是等它加載完再調用js的initSWF方法即可將環節全部打通

因此在flex的初始化時加入
//調用載入頁面的initSWF方法
ExternalInterfacecall("initSWF"); //要將它放在注冊對外方法之後進行
大功告成

有需要注意的地方
在flex當中調用js的方法這個方法只能寫在引入swf的文件中但我在jsp中引入了html所以只能是在html中的js是調用父頁面的js方法
而在jsp中對於swf文件的引用要借助windowframes["rightframe"]


From:http://tw.wingwit.com/Article/program/Java/JSP/201311/20550.html
    推薦文章
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.