最近在学Flex时遇到一个比较烦人的问题,就是题目所说的。
更郁闷的是GOOGLE了挺久还是没筛选到合适的东西,好在后来有群主的帮助,才搞定了这个问题。自己也简单演示了一下。先说说自己的理解吧,通俗版的。
1、本例要讲述的是如何在一个Application中实现模块间的却换,并且实现模块间的通讯(互通)。具体的通讯过程是Module01复杂接收输入-->Module02负责显示输出-->Module02返回到Module01
2、如何实现Module01和Module02的通讯,这就要借助Application中的变量作为临时中介,并通过Module01-->ModuleLoader-->获取数据并处理-->ModuleLoader-->Module02,这是单程,回程也是相差不多。
3、比较好的实现方法就是创建一个"自定义事件",标注从Module中发出的不同消息的意义,一个就足够了。在自定义事件里我声明了一个Object类型变量,该变量用于存储你要传递的消息,当然也可以通过下面的IEventDispatcher来实现。不同的是,消息负责里层到外的捕获,可能是利用消息的冒泡机制吧,然后IED是实现外到里的数据的传递,不过这我觉得用事件派发也同样可以实现,不过还没去试过,时间派发也可以实现从外层到里层渗透的。
还有实现IEventDispatcher事件派发接口,不同模块创建一个自己模块的接口,并且在Module中实现它。主要作用就是用来获取ModuleLoader.child的对象的值,判断是否为空,空就是对应接口的对象没有实例化成功,就是没有加载成功。接口里面的set方法可以用于接收数据(消息)到模块中去。
4、ModuleLoader.ready事件用于判断模块是否加载完成,完成就进行逻辑处理。这里我们设计的是如果完成了,就放置监听器监听模块事件并且进行进一步处理。这里利用的是ready的实时特性。其实要求不高可以放置在初始化方法中,起码我们这里就可以。
简单演示一下,看是不是你想要的。
一、初始页面:
二、进入模块一,并输入信息:
三、接收信息并显示:
四、返回到模块一:
最后请参考一下源代码
http://download.csdn.net/source/1237888
参考文章:
http://hi.baidu.com/guodong828/blog/item/715e332d7c2aa531349bf769.html