Java与Flex学习笔记(15)-Flex中的Application与Module间的通信

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,谢谢~