FLEX与JS数据交互,以及Google插件IFrame的使用

       最近因为项目需要,用到的flex,同时需要与js做数据交互,同时还用到了Google的插件IFrame,总结一点点自己的使用心得,其中很多资料都是在网上Google到的。

  • FLEX调用JS:
ExternalInterface.call("callJSMethod")

其中callJSMethod为js的函数名。具体的可以看FLEX的API,有详细的说明。需要注意的是,该JS方法需要在引用该SWF文件的JSP文件中。即:有a.jsp,包含一个b.swf的object,在b.swf中只能调用a.jsp中的方法。如果想要操作其他jsp如何处理?下面会讲到。

  • JS调用FLEX:

先需要在FLEX中注册接口方法:

ExternalInterface.addCallback("flexMethod",flexMethod);

前一个参数为JS中调用的函数名称,后一个为在flex中函数。具体的可以查看API文档,有详细的说明。

然后在JSP文件中需要引用该swf文件:

<object id="flexEdit" name="flexEdit" type="application/x-shockwave-flash" width="100%" height="100%" align="middle" >
	<param name="movie" value="../swf/flexEdit.swf" />
	<param name="quality" value="high" />
	<param name="wmode" value="transparent" />
	<param name="bgcolor" value="#ffffff" />
	<param name="allowscriptaccess" value="*">
	<param name="allowScriptAccess" value="sameDomain" />
	<param name="allowFullScreen" value="true" />
</object>

 

然后在JS中调用:

function callFlexMethod(){
	var flexObj = document.getElementById("flexEdit");
        var par = "";
        flexObj.flexMethod(par);}

 重点是需要获取swf文件的object,来进行操作。如果是非当前页面需要操作swf呢?那么就需要获取这个含有swf的jsp,然后再进行操作。现在很多都用到了iframe,应该是能够实现的。

  • FLEX弹窗

在FLEX中需要用到弹窗,使用也比较简单,代码如下:

public static function addWin():void{
	//创建弹出窗体
	var openner:IFlexDisplayObject = PopUpManager.createPopUp(this,OpenWindow, true);
	//窗体居中
	PopUpManager.centerPopUp(openner);
}

 其中OpenWindow为需要弹出flex页面,具体的可以看FLEX的API,说的很详细。现在要说的是,使用Google的IFrame插件在flex中嵌套jsp或html等页面。使用也很简单。

插件地址 http://code.google.com/p/flex-iframe

使用方法,在flex的页面中加入:

<flexiframe:IFrame id="testb" label="baidu"source="http://www.baidu.com" width="80%" height="80%" x="5" y="5"/>

具体参数设置可以自己去看慢慢研究。

现在需要说的两个问题是

1.弹出或者引用的JSP页面与FLEX交互的问题。

2.弹出或者引用的JSP页面会遮盖FLEX的问题。

  • 先说第一个,给力的网友给出了解决办法。传送门:http://www.iteye.com/topic/1130632
  • 再说第二个,IFrame也可以实现。重点就是,得到IFrame的ID,然后调用该IFrame的页面的JS方法即可。已上面的代码为例,取到openner,然后做转换,至于为什么如此操作,小弟也不知,API也没说,往哪位大神解决了,给点指点。
var ow=OpenWindow(openner);
ow.iframeID.callIFrameFunction("callJSPMethod");

 

iframeID为flex的OpenWindow页面中iframe的ID。具体的参数,可以查看API。

附上IFrame的源文件,其中已加入解决遮盖问题的代码。

猜你喜欢

转载自blog.csdn.net/wang121921936/article/details/84445588