`
iMzw
  • 浏览: 193982 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Flex之使用Cairngorm(2) - 使用ModelLocator

阅读更多
Update:需要有一定的Flex基础
使用FlexBuilder新建一个Flex Project,解压Cairngorm2_2_1-bin.zip某个文件夹,添加Cairngorm.swc到项目Build Path。
具体过程:(附件Add Flex Library)
  1. 依次点击File>New>Flex Project
  2. 在弹出的New Flex Project对话框中输入项目名UserManager,点击Next
  3. 选择输出文件夹(默认就可以),Next
  4. 到源码路径和类库配置界面,选择Library Path tab,你可以看到默认导入的Flex类库,点击右侧的Add SWC按钮
  5. 在选择文件对话框中,找到Cairngorm.swc,点击OK
  6. 点击Finish

PS:你可以简单的把Cairngorm.swc放到项目的Libs目录下
建立文件夹结构(附件Package Structure)
新建 class UserManagerModelLocator 实现 IModelLocator 接口
net/imzw/UserManagerDemo/model/UserManagerModelLocator.as
package net.imzw.UserManagerDemo.model{
	import com.adobe.cairngorm.model.IModelLocator;
	
	import mx.collections.ArrayCollection;

	public class UserManagerModelLocator implements IModelLocator{
		// Single Instance of Our ModelLocator
		private static var instance:UserManagerModelLocator;
		public function UserManagerModelLocator(enforcer:SingletonEnforcer) {
		if (enforcer == null) {
				throw new Error( "You Can Only Have One UserManagerModelLocator" );
			}
		}
		// Returns the Single Instance
		public static function getInstance() : UserManagerModelLocator {
			if (instance == null) {
				instance = new UserManagerModelLocator( new SingletonEnforcer() );
			}
			return instance;
		}
		//DEFINE YOUR VARIABLES HERE
		public var workflowState:uint = 0;
		
		// DEFINE VIEW CONSTATS
		public static const LOGIN_SCREEN:uint = 0;
		public static const MAIN_SCREEN:uint = 1;
	}
}
class SingletonEnforcer {}

这里用了一个设计模式:单例模式,即整个应用程序只有一个该类的实例,目的很明显--共享数据。也就是这里
  //DEFINE YOUR VARIABLES HERE
		public var workflowState:uint = 0;

这些是共享的,稍后我再介绍他们。
新建两个视图组件
net/imzw/UserManagerDemo/views/LoginForm.mxml
<?xml version="1.0" encoding="utf-8"?>
<mx:VBox xmlns:mx="http://www.adobe.com/2006/mxml">
	<mx:Script>
		<![CDATA[
			import net.imzw.UserManagerDemo.model.UserManagerModelLocator;
		
			import mx.controls.Alert;
			
			private var modelLocator:UserManagerModelLocator
 = UserManagerModelLocator.getInstance();
			
			private function login(e:MouseEvent):void{
				if( loginNameTextInput.text == "imzw" 
&& passwordTextInput.text == "imzw" ){
					modelLocator.workflowState = UserManagerModelLocator.MAIN_SCREEN;
				}
			} 
		]]>
	</mx:Script>
	<mx:Form defaultButton="{loginButton}">
		<mx:FormHeading label="Please Login" />
		<mx:FormItem label="LoginName">
			<mx:TextInput id="loginNameTextInput" />
		</mx:FormItem>
		<mx:FormItem label="Password">
			<mx:TextInput id="passwordTextInput" displayAsPassword="true"/>
		</mx:FormItem>
		<mx:HBox horizontalAlign="right" width="100%">
			<mx:Button id="loginButton" click="{login(event)}" label="Login"/>
		</mx:HBox>
	</mx:Form>
</mx:VBox>

net/imzw/UserManagerDemo/views/MainScreen.mxml
<?xml version="1.0" encoding="utf-8"?>
<mx:VBox xmlns:mx="http://www.adobe.com/2006/mxml">
	<mx:Script>
		<![CDATA[
			import net.imzw.UserManagerDemo.model.UserManagerModelLocator;
			[Bindable]
			private var modelLocator:UserManagerModelLocator
 = UserManagerModelLocator.getInstance();
		]]>
	</mx:Script>
	<mx:Button label="Logout" id="logoutButton" 
		click="{modelLocator.workflowState = UserManagerModelLocator.LOGIN_SCREEN }"/>
</mx:VBox>

同时在应用程序主文件中写入如下代码:
UserManagerDemo.mxml
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" 
	layout="absolute" xmlns:view="net.imzw.UserManagerDemo.views.*"> 
	<mx:Script>
		<![CDATA[
			import net.imzw.UserManagerDemo.model.UserManagerModelLocator;
			import mx.controls.Alert;
			
			[Bindable]
			private var modelLocator:UserManagerModelLocator = UserManagerModelLocator.getInstance();
		]]>
	</mx:Script>
	
	<mx:ViewStack width="100%" height="100%" 
		selectedIndex="{modelLocator.workflowState}">
		<view:LoginForm />
		<view:MainScreen />
	</mx:ViewStack>
</mx:Application>

OK,Run Application。
你将看见 (输入用户名imzw密码imzw试试看)

  • 描述: Add Flex Library
  • 大小: 69.2 KB
  • 描述: Package Structure
  • 大小: 15.5 KB
1
0
分享到:
评论

相关推荐

    Flex之使用Cairngorm(3) - Command & Event

    标题提到的“Flex之使用Cairngorm(3) - Command & Event”,意味着这个系列文章已经讲解了Cairngorm的基础知识,现在将更深入地探讨Command模式和Event机制,这两个是Cairngorm中关键的交互元素。 Command模式是...

    跟我StepByStep学FLEX教程------王一松

    - **ModelLocator**:ModelLocator是Cairngorm的核心组件之一,用于存储业务逻辑相关的数据。 - **Command**:Command模式用于处理应用程序中的各种命令。 - **View**:View组件负责展示UI。 #### 34. MVC - **MVC...

    Flex开发框架cairngorm入门实例教程

    Cairngorm是一个轻量级的MVC框架,专门用于Adobe Flex应用程序的开发。这个框架的设计目的是为了提高Flex项目的可维护性和可扩展性,通过分离业务逻辑、视图和控制层,使得代码更加模块化。在Cairngorm中,模型...

    flex框架之Cairngorm框架(二)

    在“flex框架之Cairngorm框架(二)”这个主题中,我们可能深入探讨如何使用Cairngorm与后台进行通信。这通常涉及以下步骤: 1. **创建Command**:首先,为与后台的通信创建一个命令类,例如`...

    Flex框架Cairngorm经典案例源码

    3. **模型的创建和管理**:案例可能会展示如何创建和使用ModelLocator来管理全局模型,使得多个组件可以共享同一份数据。 4. **视图组件的交互**:通过设置视图组件的事件监听器,当用户操作视图时,控制器接收并...

    flex-Cairngorm框架

    Flex Cairngorm框架详解 Flex Cairngorm框架是Adobe Flex应用程序开发中的一个流行的设计模式,它基于Model-View-Controller(MVC)架构,旨在提高代码的可维护性和可扩展性。Cairngorm框架由SitePen公司开发,最初...

    Flex3+Cairngorm+Spring的增删改查模块

    Flex3+Cairngorm+Spring的增删改查模块是一个典型的富互联网应用程序(RIA)开发实例,它结合了Adobe Flex3、Cairngorm框架和Spring框架,为小型用户提供了一个全面的CRUD(Create, Read, Update, Delete)功能。...

    Flex轻量级开发框架-Cairngorm介绍

    ### Flex轻量级开发框架——Cairngorm详细介绍 #### 一、引言 随着RIA(Rich Internet Applications)技术的发展,Flex作为一种强大的客户端技术,在构建交互丰富的应用方面展现了其独特的优势。为了更好地组织代码...

    flex+cairngorm+java 实例

    综上所述,这个Flex Cairngorm Java实例展示了如何使用这些技术来构建一个完整的RIAs解决方案,其中Flex负责前端展示,Cairngorm作为架构基础,Java处理后端服务,而BlazeDS则作为通信桥梁。通过这样的组合,开发者...

    Flex 框架搭建步骤Cairngorm

    2. **视图(View)**:视图通常是Flex中的UI组件,如Flex布局、按钮、文本框等,它们通过数据绑定直接与`ModelLocator`交互,显示和处理用户输入。视图的变化不会直接操作模型,而是通过事件触发控制器。 3. **控制...

    Flex Cairngorm Parsley Demo 源码

    Flex Cairngorm和Parsley是两种在Adobe Flex框架中广泛使用的MVC(Model-View-Controller)设计模式实现库,它们主要用于构建大型、复杂的富互联网应用程序(RIA)。本源码Demo提供了这两种技术的集成应用实例,帮助...

    flex_cairngorm_Mvc_HelloWorld

    Flex是一种用于构建富互联网应用程序(RIA)的开源框架,而Cairngorm是Flex社区中最受欢迎的轻量级MVC设计模式实现之一。这个项目可能是为了帮助初学者理解如何在Flex中使用Cairngorm来组织代码和管理应用程序的复杂...

    cairngorm构架做的flex-weather倒影(推荐)

    【标题】"cairngorm构架做的flex-weather倒影(推荐)"涉及的核心知识点主要围绕Flex开发框架Cairngorm以及它在构建Flex Weather应用程序中的应用,同时提到了视觉效果——倒影。让我们详细了解一下这些关键概念。 ...

    flex框架 Cairngorm+spring集成

    - **ModelLocator**:作为Cairngorm的核心组件之一,ModelLocator的作用是集中管理应用程序中的数据模型。它通过单例模式实现,确保在整个应用程序中对数据模型的统一访问和更新,避免了数据冲突和冗余。 - **...

Global site tag (gtag.js) - Google Analytics