javascript

位置:IT落伍者 >> javascript >> 浏览文章

js调用Flex中的方法并向flex中传参及flex调用js示例


发布日期:2021年10月18日
 
js调用Flex中的方法并向flex中传参及flex调用js示例

首先有了一个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"]

               

上一篇:JS解决ie6下png透明的方法实例

下一篇:JS调用打印方法设置页眉页脚