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

2 篇文章 1 订阅
1 篇文章 0 订阅

    最近在做一个项目,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);

 

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

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值