加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

Flex+JavaScript交互框架完全解决方案(一)

发布时间:2020-12-15 03:39:33 所属栏目:百科 来源:网络整理
导读:??? 最近在做一个项目,GIS部分要求用Flex做,封装成接口供业务部分调用,业务部分用JAVA做。这样就需要一个Flex和JavaScript的交互工作。项目已接近尾声,交互方案也得到了验证,写点东西来总结一下,和大家分享分享,有兴趣的同学希望能一起交流分享 ???

??? 最近在做一个项目,GIS部分要求用Flex做,封装成接口供业务部分调用,业务部分用JAVA做。这样就需要一个Flex和JavaScript的交互工作。项目已接近尾声,交互方案也得到了验证,写点东西来总结一下,和大家分享分享,有兴趣的同学希望能一起交流分享
??? 首先交互方案解决了4个基本问题:
??? 1、Flex中如何获取HTML页面中的配置参数???
??? 2、Flex如何调用JavaScript中的方法
??? 3、JavaScript如何调用Flex中的方法
??? 4、JavaScript如何监听Flex中的事件

??? 一、
??? 问题1很简单,直接贴代码:
??

上面代码是HTMl中嵌入.swf文件的代码,红色方框内是传递的参数,Flex中读取的代码如下:

var parameters : Object= FlexGlobals.topLevelApplication.parameters; ?

var ip:String= parameters.GisServerIP;?

实际应用中发现这样很不方便,就把配置信息都放在一个配置文件中了,又Flex自己去读。

二、

问题2也简单,JavaScript中写一个方法,Flex中直接调用就可以了,Flex中调用的代码如下:

ExternalInterface.call(“OnSWFLoad”,"传向js的参数,可以是object对象");

这样写只是技术走通了,使用起来并不方便,需要事先约定函数名称。实际应用中也没有没有这样写过,需要用到类似功能的地方都用其他方法代替了。

三、

问题3步骤稍复杂了一点在Flex中需要先公开一个函数名,然后JavaScript才能调用,Flex中代码如下:
ExternalInterface.addCallback("js中调用时的函数名称","Flex中实际执行的函数名称");

在JavaScript中调用Flex代码就用对象名点函数名就OK了。当然为了方便管理我把所有公开的函数都放在了一个类中。

四、

问题4实际上是问题2和问题3方案的组合,为了方便期间把所有可以监听的事件类型都放在了一个OpenedEvents中,部分代码如下图

然后公开两个函数:

ExternalInterface.addCallback(OpenedFunctions.AddEventListener,AddEventListener);
ExternalInterface.addCallback(OpenedFunctions.RemoveEventListener,RemoveEventListener);

?private function AddEventListener(key:String = null,JSFunction:String = null):Boolean
???{
?????if (key == null || JSFunction == null) return false;
????OpenedEvents[key]=JSFunction;return true;

? }

private function RemoveEventListener(key:String = null):Boolean
???{
?????if (key == null) return false;
????OpenedEvents[key]="void";
????return true;

?}

Flex中当某一事件触发时不管JavaScript又没有监听按下面方式写就行了:

ExternalInterface.call(OpenedEvents.CreationComplete);

?

今天先写这些,改天再把交互中遇到的其他问题整理一下

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读