Java与Flex学习笔记(15)-Flex中的Application与Module间的通信
在Adobe Flashbuilder 4.5中创建文件时可以创建Application,Module,Component这3类文件。本人在刚开始学习Flex时深深的不理解这3个的区别,随着学习的深入现已知道这3种的区别与用法,但是有一种“只可意会不可言传”的感觉,所以,本人就说说Application与Module之间的通信.
首先得知道Module被编译成swf文件,在Application调用的时候才加载Module.这样做的好处显而易见。
那么在Application中怎么调用Module呢?新建一个Application文件Login.mxml如下代码:
<?xmlversion="1.0" encoding="utf-8"?> <s:Application xmlns:fx="http://ns.adobe.com/mxml/2009" xmlns:s="library://ns.adobe.com/flex/spark" xmlns:mx="library://ns.adobe.com/flex/mx"pageTitle="我的网盘" preloader="ases.util.LoadingProgressBarUtil" creationComplete="app_creationCompleteHandler(event)"width="100%" height="100%"> <fx:Script> <![CDATA[ protected function reg_account_clickHandler(event:MouseEvent):void { // TODOAuto-generated method stub center_canvas.visible=false; comonModule.visible=true; if(registerModuleLoader.url==null){ registerModuleLoader.url="module/registerUserModule.swf"; } registerModuleLoader.loadModule(); //开始加载module } ]]> </fx:Script> <mx:Canvas width="1060"height="100%" id="center_canvas" > <mx:LinkButton label="注册新帐号"width="90" height="22" id="reg_account"click="reg_account_clickHandler(event)" /> </mx:Canvas> <mx:Canvas width="1060" height="100%" id="comonModule" visible="false"> <s:ModuleLoader id="registerModuleLoader" /> </mx:Canvas> </s:Application>
这部分代码实现的效果是 当点击“注册新帐号”时加载Module并隐藏“注册新帐号”按钮。注意,url中指定的registerUserModule.swf为创建的Module文件registerUserModule.mxml生成的swf文件。
Module中怎么与Application通信呢?新建一个module文件registerUserModule.mxm,代码如下所示:
<?xmlversion="1.0" encoding="utf-8"?> <s:Module xmlns:fx="http://ns.adobe.com/mxml/2009" xmlns:s="library://ns.adobe.com/flex/spark" xmlns:mx="library://ns.adobe.com/flex/mx" width="1060" height="100%"initialize="registerUser_initializeHandler(event)"creationComplete="registerUser_creationCompleteHandler(event)"> <fx:Script> <![CDATA[ protected function back_login_button_clickHandler(event:MouseEvent):void { // TODOAuto-generated method stub this.parentApplication.center_canvas.visible=true; //将母页面的center_canvas设置为可见 this.parentApplication.registerModuleLoader.unloadModule(); //卸载此Module } ]]> </fx:Script> <mx:LinkButton label="已有账号登陆"id="back_login_button"click="back_login_button_clickHandler(event)" /> </s:Module>
而这部分代码则实现的是点击“已有账号登陆”按钮返回母页面Login.mxml,即卸载此module页面即可,方法是通过this.parentApplication即可得到此母页面的实例,继而可以操作母页面的属性。
此代码为本人练习中的一个小项目的部分代码。
这是本人学习的结果,允许转载,欢迎交流,但转载务必给出本文章的链接地址:http://blog.****.net/youqishini/article/details/7953199,谢谢~