首先有了一個swf文件testswf同時也有一個自動生成的html文件testhtml
然後在另外一個文件testjsp中通過iframe引入了testhtml即引入了swf
現在想要在testjsp中向flex傳參並調用flex中的方法我采用的方法是
首先在jsp中寫一個調用flex的方法如下
復制代碼 代碼如下:
function initSWF(){
//得到swf的object
var obj = window
frames["rightframe"]
ReverseQuery; //rightframe是iframe的名字
ReverseQuery是在test
html中
引入swf做object的id
//調用它的方法
var start = "<%=startPoint%>";
var end = "<%=endPoint%>";
obj
showParams(start
end);
}
在html中
有方法
/*在flex中只能調用本頁面的js方法*/
function initSWF(){
parent
initSWF();
}
在flex
有如下方法
public function showParams(start:String
end:String):void{
Alert
show(start);
Alert
show(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