Flex4中的ModuleLoader,Alert以及TitleWindow

1、ModuleLoader

在Asp.Net开发中,经常会把页面的公共部分封装成自定义控件ascx,以达到重用或动态加载的目的。在Flex4中MXML Module能达到类似的功能,可以把某些功能单独封装成在一个Module,然后利用ModuleLoader动态加载。
每个MXML Module在Build时,会生成一个同名的swf(比如A.mxml会生成A.swf),但是不能单独运行。
然后在主界面的mxml中,利用ModuleLoader组件来加载,示例代码如下:
<?xml version="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" minWidth="400" minHeight="300" xmlns:ns1="*">
	<s:layout>
		<s:BasicLayout/>
	</s:layout>

	<fx:Script>
		<![CDATA[
			import mx.controls.Alert;
			import mx.events.ModuleEvent;		
			
			protected function btnLoad_clickHandler(event:MouseEvent):void
			{				
				mLoader.loadModule("ModuleStu.swf");				
			}

			protected function mLoader_loadingHandler(event:Event):void
			{
				trace("加载中...");
			}

			protected function mLoader_readyHandler(event:ModuleEvent):void
			{
				trace("加载完成!");				
			}

		]]>
	</fx:Script>
	<mx:ModuleLoader id="mLoader" right="10" top="10" left="10" bottom="40" loading="mLoader_loadingHandler(event)" ready="mLoader_readyHandler(event)">
	</mx:ModuleLoader>
	<s:Button label="Load" id="btnLoad" click="btnLoad_clickHandler(event)" bottom="10" horizontalCenter="0"/>
</s:Application>
不过Module加载后,并不象Asp.Net中的ascx那样好控制(也许仅仅只是我目前功力不够)

2、Alert以及TitleWindow

在应用程序中通过弹窗来显示一些消息,是常用的手段。Alert及TitleWindow能满足这种要求
弹出窗口LoginWindow.mxml (创建时 New-->MXML Component,Base on 这里选择spark.components.TitleWindow)
<?xml version="1.0" encoding="utf-8"?>
<s:TitleWindow 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="334" height="146" title="请输入微薄内容" close="doClose()">
	<s:layout>
		<s:BasicLayout/>
	</s:layout>
	<fx:Script>
		<![CDATA[
			//引入需要的包
			import mx.managers.PopUpManager;
			import mx.controls.Alert;
			import mx.events.CloseEvent;
		
			import spark.components.TextArea;
			
			private var _txtContent:TextArea;
			
			public function get txtContent():TextArea
			{
				return _txtContent;
			}

			public function set txtContent(value:TextArea):void
			{
				_txtContent = value;
			}

			private function doClose():void
			{
				Alert.yesLabel = "是";
				Alert.noLabel = "否";
				Alert.show("确定要退出吗?", "提示", Alert.YES|Alert.NO, this, alertClickHandler);				
			}
			
			private function alertClickHandler(evt:CloseEvent):void {
				if (evt.detail == Alert.YES) {
					//关闭自身
					PopUpManager.removePopUp(this);
				} 
			}
			
			private function doSend():void
			{
				if (txtMsg.text.length>0){
					//在关闭窗口前,给父窗口中的相关文本框赋值(注:这要求在父窗口中调用时,得按约定传递txtContent的引用)
					txtContent.text = txtMsg.text;
				}
				//关闭自身
				PopUpManager.removePopUp(this);
			}		

		]]>
	</fx:Script>
	<s:TextArea x="10" y="11" width="312" height="61" id="txtMsg"/>
	<s:Button x="131" y="84" label="发 送" id="btnSend" click="doSend()"/>
	
</s:TitleWindow>

调用的主窗口TitleWindowDemo.mxml
<?xml version="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">

	<fx:Script>
		<![CDATA[
		
		import mx.managers.PopUpManager;
		
			private function showWindow():void
			{
				var _loginWin:LoginWindow = PopUpManager.createPopUp(this,LoginWindow,true) as LoginWindow;
				PopUpManager.centerPopUp(_loginWin);
				
				//给弹出窗口的txtContent传递引用
				_loginWin.txtContent = this.txtResult;
			}
		
		]]>
	</fx:Script>
	<s:TextArea top="10" left="10" right="10" bottom="40" id="txtResult" editable="false"/>
	<s:Button label="发微薄" horizontalCenter="0" bottom="10" id="btnWrite" click="showWindow()"/>

	

</s:Application>

优秀的个人博客,低调大师

微信关注我们

原文链接:https://yq.aliyun.com/articles/251081

转载内容版权归作者及来源网站所有!

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。

相关文章

发表评论

资源下载

更多资源
优质分享Android(本站安卓app)

优质分享Android(本站安卓app)

近一个月的开发和优化,本站点的第一个app全新上线。该app采用极致压缩,本体才4.36MB。系统里面做了大量数据访问、缓存优化。方便用户在手机上查看文章。后续会推出HarmonyOS的适配版本。

Oracle Database,又名Oracle RDBMS

Oracle Database,又名Oracle RDBMS

Oracle Database,又名Oracle RDBMS,或简称Oracle。是甲骨文公司的一款关系数据库管理系统。它是在数据库领域一直处于领先地位的产品。可以说Oracle数据库系统是目前世界上流行的关系数据库管理系统,系统可移植性好、使用方便、功能强,适用于各类大、中、小、微机环境。它是一种高效率、可靠性好的、适应高吞吐量的数据库方案。

Apache Tomcat7、8、9(Java Web服务器)

Apache Tomcat7、8、9(Java Web服务器)

Tomcat是Apache 软件基金会(Apache Software Foundation)的Jakarta 项目中的一个核心项目,由Apache、Sun 和其他一些公司及个人共同开发而成。因为Tomcat 技术先进、性能稳定,而且免费,因而深受Java 爱好者的喜爱并得到了部分软件开发商的认可,成为目前比较流行的Web 应用服务器。

Eclipse(集成开发环境)

Eclipse(集成开发环境)

Eclipse 是一个开放源代码的、基于Java的可扩展开发平台。就其本身而言,它只是一个框架和一组服务,用于通过插件组件构建开发环境。幸运的是,Eclipse 附带了一个标准的插件集,包括Java开发工具(Java Development Kit,JDK)。