Flex 操作视图层

事件的创建,分发,监听,处理,思路都是很清晰的

事件可以自己继承Event类,然后加入属性存储处理所需参数

分发可以EventDispather分发

监听和处理也不是很难

 

现在的问题是,处理了事件之后,该如何改变视图?

 

比如登录模块是一个Module,用的是ModuleLoader加载

那么登录之后,怎么取得另一个Module改变视图?

或者改变主引用程序,切换State或者ViewStack?

 

我想了一下...也只能写下一下的代码了

方法其实很简单,就是Application.application,获取主应用程序实例

<mx:ViewStack x="{application.width / 2 - 475}" y="{application.height / 2 - 300}" 
				  id="mainView" width="950" height="600">
	<!-- 登录模块 -->
	<mx:Canvas label="登录" width="100%" height="100%" showEffect="Fade" hideEffect="Fade">
		<mx:ModuleLoader id="login" url="com/emavaj/testexam/view/Login.swf"/>
	</mx:Canvas>
	<!-- 注册模块 -->
	<mx:Canvas label="注册" width="100%" height="100%" showEffect="Fade" hideEffect="Fade">
		<mx:ModuleLoader url="com/emavaj/testexam/view/Register.swf"/>
	</mx:Canvas>
	<!-- 后台模块 -->
	<mx:Canvas label="" width="100%" height="100%" showEffect="Fade" hideEffect="Fade">
		<mx:ModuleLoader id="admin" url="com/emavaj/testexam/view/Admin.swf"/>
	</mx:Canvas>
</mx:ViewStack>

 

上面代码是,主应用程序结构,登录模块Module如下:

<mx:Panel x="322.5" y="176" width="305" height="218" layout="absolute">
	<mx:TextInput id="username" x="71" y="42"/>
	<mx:TextInput id="password" x="71" y="87" displayAsPassword="true"/>
	<mx:Label x="10" y="44" text="用户名:"/>
	<mx:Label x="24" y="89" text="密码:"/>
	<mx:Button x="219" y="141" label="登录" click="login()"/>
	<mx:Button x="155" y="141" label="注册" click="register()"/>
</mx:Panel>

 

当点击登录时,执行login() 函数,派发事件,处理了之后,需要跳转到Admin这个Module上

只是,我写了一个查找视图的工具类:

package com.emavaj.testexam.util{
	import mx.core.Application;

	/**.
	 * 视图工具
	 */
	public class ViewUtil{
		/**单例对象.*/
		private static var viewUtil:ViewUtil;
		
		/**获取后台视图.*/
		public static function getAdminModule():Object {
			return Application.application.admin.child;
		}
	}
}

 

 

其实是个伪类,全部是静态方法

核心代码是:

Application.application

 

这一句就是取得了整个应用程序实例

然后 .admin 是取得后台模块的 ModuleLoader对象

 .child就是真正的后台模块的 Module实例了...

 

取得了Module实例后,一切就好办了

 

方法虽笨,但是...简单易懂...

 

如果各位有更好的方法,请赐教

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值