您的位置:首页 > 移动开发

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

2012-09-07 00:23 555 查看
      

        在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://www.dianfusoft.com/

 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息