首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 媒体动画 > flex >

Flex 操作看图层

2013-11-08 
Flex 操作视图层事件的创建,分发,监听,处理,思路都是很清晰的事件可以自己继承Event类,然后加入属性存储处

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实例后,一切就好办了

?

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

?

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

热点排行