`

cairngorm登陆设计

阅读更多

       听到一个网友讲了他的需求,所以花了点时间写了这个东西,顺便开了个博客,以前感觉自己写的东西拿不出来见人,但是这样自己就得不到发展,希望能对入门开发人员有点启示,高手们多加指导,作为一个业余爱好者,大学四年来,网络给予我很多的东西,帮助了我很多,网络作为我大学时代的唯一老师,我很是感激,希望终有一天自己能够为中国的开源程序发展做出丁点(毕竟能力是有限的)。特此感谢其他写程序博客人们,你们每一个都是无私的老师,能够与其他人分享开发的快乐。 同时也祝愿自己能够找到工,克服危机,加油!!! 程序只是展现流程而已,大家自行补充完整,service是没有发送任何东西的,php页面会返回一个字符串。

 

LoginService.as
package com.steps.Player.business
{
	import com.steps.Player.vo.UserLoginInfo;
	
	import mx.rpc.AsyncToken;
	import mx.rpc.IResponder;
	import com.adobe.cairngorm.business.ServiceLocator;
	
	public class LoginService
	{
		private var responder:IResponder;
		private var service:Object;
		public function LoginService(responder:IResponder)
		{
			this.responder=responder;
			this.service=ServiceLocator.getInstance().getHTTPService("LoginService");
		}
		public function login(userloginInfo:UserLoginInfo):void
		{
			var token:AsyncToken=service.send();
			token.addResponder(responder);
		}

	}
}


LoginManageCommand.as
package com.steps.Player.command
{
	import com.adobe.cairngorm.commands.ICommand;
	import com.adobe.cairngorm.control.CairngormEvent;
	import com.steps.Player.business.LoginService;
	import com.steps.Player.event.UserLoginEvent;
	import com.steps.Player.view.PopupTitleWindow;
	
	import flash.display.DisplayObject;
	
	import mx.managers.PopUpManager;
	import mx.rpc.IResponder;

	public class LoginManageCommand implements ICommand, IResponder
	{
		private var parent:DisplayObject;
		public function execute(event:CairngormEvent):void
		{
			if(event.type==UserLoginEvent.unLogin)
			{
				var login:PopupTitleWindow=PopupTitleWindow(PopUpManager.createPopUp((event as UserLoginEvent).parent,PopupTitleWindow,true))
				PopUpManager.centerPopUp(login);
			}
			if(event.type==UserLoginEvent.login)
			{
				this.parent=(event as UserLoginEvent).parent;
				var delegate:LoginService=new LoginService(this);
				delegate.login((event as UserLoginEvent).userLoginInfo);
			}
		}
		
		public function result(data:Object):void
		{
			PopUpManager.removePopUp(this.parent as PopupTitleWindow);
		}
		
		public function fault(info:Object):void
		{
		}
		
	}
}


LoginControl.as
package com.steps.Player.control
{
	import com.adobe.cairngorm.control.FrontController;
	import com.steps.Player.event.UserLoginEvent;
	import com.steps.Player.command.LoginManageCommand;
	public class LoginControl extends FrontController
	{
		
		public function LoginControl()
		{
			addCommand(UserLoginEvent.unLogin,LoginManageCommand);
			addCommand(UserLoginEvent.login,LoginManageCommand);
		}
		
	}
}


UserLoginEvent.as
package com.steps.Player.event
{
	import com.adobe.cairngorm.control.CairngormEvent;
	
	import com.steps.Player.vo.UserLoginInfo;
	
	import flash.display.DisplayObject;
	import flash.events.Event;

	public class UserLoginEvent extends CairngormEvent
	{
		public static const unLogin:String="unLogin";
		public static const login:String="login";
		public var userLoginInfo:UserLoginInfo;
		public var parent:DisplayObject;
		public function UserLoginEvent(type:String,parent:DisplayObject)
		{
			super(type);
			this.parent=parent;
		}
		override public function clone():Event
		{
			return new UserLoginEvent(type,parent);
		}	
		public function set loginInfo(userLoginInfo:UserLoginInfo):void
		{
			this.userLoginInfo=userLoginInfo;
		}
		public function get loginInfo():UserLoginInfo
		{
			return this.userLoginInfo;
		}
	}
}

Login.as
package com.steps.Player.model
{
	import com.steps.Player.vo.UserLoginInfo;
	
	
	public class Login
	{
		
		[Bindable]
		public var userLoginInfo:UserLoginInfo=new UserLoginInfo();
		


	}
}

ModelLocator.as
package com.steps.Player.model
{
	[Bindable]
	public class ModelLocator
	{
		
		
		static private var __instance:ModelLocator=null;
		static public function getInstance():com.steps.Player.model.ModelLocator
		{
			if(__instance==null)
			{
				__instance=new ModelLocator();
			}
			return __instance;
		}
		public function ModelLocator()
		{
				
		}
		public var login:Login=new Login();

	}

}


 PopupTitleWindow.mxml
<?xml version="1.0" encoding="utf-8"?>
<mx:TitleWindow xmlns:mx="http://www.adobe.com/2006/mxml" title="登陆" layout="absolute" width="400" height="300">
	<mx:Script>
		<![CDATA[
			import com.steps.Player.vo.UserLoginInfo;
			import com.steps.Player.event.UserLoginEvent;
			import mx.events.ModuleEvent;
			import com.adobe.cairngorm.control.CairngormEventDispatcher;
			private function onLogin(event:MouseEvent):void
			{
				var userLoginInfo:UserLoginInfo=new UserLoginInfo();
				userLoginInfo.userName=username.text;
				userLoginInfo.userPassword=password.text;
				var evt:UserLoginEvent=new UserLoginEvent(UserLoginEvent.login,this);
				evt.loginInfo=userLoginInfo;
				CairngormEventDispatcher.getInstance().dispatchEvent(evt);	
			}
		]]>
	</mx:Script>
	<mx:Form x="67" y="59">
		<mx:FormItem label="用户名:">
			<mx:TextInput id="username"/>
		</mx:FormItem>
		<mx:FormItem label="密码:">
			<mx:TextInput id="password"/>
		</mx:FormItem>
		
	</mx:Form>
	<mx:Button label="登陆" click="onLogin(event)" x="255" y="159"/>
	<mx:Button x="199" y="159" label="清空"/>
</mx:TitleWindow>

UserLoginInfo.as
package com.steps.Player.vo
{
	import com.adobe.cairngorm.vo.ValueObject;

	public class UserLoginInfo implements ValueObject
	{
		
		public var userName:String="";
		public var userPassword:String="";
		public var isLogin:Boolean=false;
		public function UserLoginInfo()
		{
		}

	}

}


popuptest.mxml
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml"
	xmlns:business="com.steps.Player.business.*"
	xmlns:control="com.steps.Player.control.*"
	xmlns:view="com.steps.Player.view.*"
	 layout="absolute"
    creationComplete="init()">
	<mx:Script>
		<![CDATA[
			import com.steps.Player.event.UserLoginEvent;
			import com.steps.Player.model.Login;
			import com.steps.Player.event.UserLoginEvent;
			import com.steps.Player.model.ModelLocator;
			import com.adobe.cairngorm.control.CairngormEventDispatcher;
			private var __model:ModelLocator=ModelLocator.getInstance();
			private function init():void
			{
				if(!__model.login.userLoginInfo.isLogin)
				{
					var event:UserLoginEvent=new UserLoginEvent(UserLoginEvent.unLogin,this);
					CairngormEventDispatcher.getInstance().dispatchEvent(event);
				}
			}
		]]>
	</mx:Script>
	<control:LoginControl id="LoginControl"/>
	<business:services id="LoginService"/>
</mx:Application>
 
services.mxml
<?xml version="1.0" encoding="utf-8"?>
<rds:ServiceLocator xmlns:rds="com.adobe.cairngorm.business.*" xmlns:mx="http://www.adobe.com/2006/mxml">
	<mx:HTTPService id="LoginService" useProxy="false" url="http://localhost/popuptest/bin-debug/login.php" resultFormat="text" method="get">
		
	</mx:HTTPService>
</rds:ServiceLocator>
 
 
2
0
分享到:
评论

相关推荐

    Cairngorm开发文档中文版

    Cairngorm是一种轻量级的ActionScript框架,主要用于构建Flex和Adobe AIR应用程序。这个框架是基于模型-视图-控制器(MVC)设计模式,旨在提高应用的可维护性和可扩展性。Cairngorm由Adobe开源社区推出,旨在为开发...

    Cairngorm例子

    在Flex开发中,Cairngorm框架提供了一种组织应用程序逻辑的方式,它强调了分离关注点,使得业务逻辑、用户界面和数据管理可以独立地进行设计和测试。MVC模式的核心在于将应用的各个部分划分清晰,模型负责处理数据,...

    cairngorm中文版

    **Cairngorm框架详解** Cairngorm框架是Adobe Flex开发中的一个核心MVC(Model-View-Controller)框架,它为构建可扩展、可维护的富互联网应用程序(RIA)提供了一种结构化的方法。Flex是一种基于ActionScript 3.0...

    Cairngorm.swc

    Cairngorm is the lightweight micro-architecture for Rich Internet Applications built in Flex or AIR. A collaboration of recognized design patterns, Cairngorm exemplifies and encourages best-practices ...

    Cairngorm框架配置

    Cairngorm是一种专门为Adobe Flex设计的模型-视图-控制器(Model-View-Controller, MVC)架构模式框架。它通过清晰地分离应用逻辑,使得开发更加模块化、可维护性强,并且能够很好地与后端服务进行交互。 ##### 1.1 ...

    flex Cairngorm.swc

    cairngorm.swc供需要的朋友急用

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

    这个框架的设计目的是为了提高Flex项目的可维护性和可扩展性,通过分离业务逻辑、视图和控制层,使得代码更加模块化。在Cairngorm中,模型(Model)、视图(View)和控制器(Controller)之间的通信是通过事件驱动...

    flex框架之Cairngorm框架(二)

    Cairngorm是Flex框架中的一个轻量级MVC(Model-View-Controller)设计模式实现,由Adobe社区成员Stephan J. Schmidt在2005年提出。这个框架旨在提高Flex应用的可维护性和可扩展性,通过分离业务逻辑、用户界面和数据...

    Flex框架Cairngorm经典案例源码

    Cairngorm是Flex社区中流行的一种轻量级MVC(Model-View-Controller)框架,它提供了一种结构化的方法来组织和管理Flex项目的代码,从而提高开发效率和代码可维护性。 Cairngorm框架的核心组件包括: 1. **模型...

    [cairngorm入门]introducing_cairngorm.pdf

    - **定义与背景**:Cairngorm是一种专为Adobe Flex应用程序设计的模型-视图-控制器(MVC)架构模式。它是由Adobe Systems Inc.在2004年推出的一种灵活的应用程序开发框架,用于构建丰富的Internet应用程序(RIA)。...

    cairngorm + lcds最小包.rar

    《cairngorm与LCDs结合应用:最小工程解析》 在Adobe Flex开发领域,cairngorm和LiveCycle Data Services (LCDS)是两个重要的框架和工具,它们各自为开发者提供了强大的功能。cairngorm作为一个轻量级的MVC(Model-...

    Cairngorm2.rar

    Cairngorm是Adobe Flex社区中的一个开源框架,主要用于构建大型、可扩展的富互联网应用程序(RIA)。这个框架是基于MVC(Model-View-Controller)设计模式的,旨在提高Flex应用的可维护性和可扩展性。Cairngorm 2.1...

    Cairngorm.swc+Cairngorm+开发文档中文版.rar 套装

    Cairngorm的核心设计理念是基于Model-View-Controller (MVC)设计模式,它将应用程序分为三个主要部分:模型(Model)、视图(View)和控制器(Controller)。这种分离使得代码更易于理解和维护,同时提高了代码的...

    Cairngorm-Flex.zip_Cairngorm_flex

    Cairngorm框架是Adobe Flex开发中的一种著名轻量级MVC(Model-View-Controller)框架,由Adobe公司的专业团队设计,旨在提高Flex应用程序的可维护性和可扩展性。这个框架的核心理念是通过分离业务逻辑、用户界面和...

    Flex UI Design For Cairngorm

    标题与描述:“Flex UI 设计对于Cairngorm的重要性” 在深入探讨之前,我们首先要理解Flex UI设计与Cairngorm框架之间的关联性。Flex是一种用于构建和部署跨平台的富互联网应用程序(RIA)的强大技术,它允许开发者...

    cairngorm3实践源码

    Cairngorm是Adobe Flex/AIR社区中一个著名的轻量级MVC框架,它为ActionScript 3.0应用程序提供了结构和设计模式,便于开发大型、可维护的项目。这个压缩包包含的是Cairngorm3的实践源码,对于学习和理解Cairngorm3的...

    Cairngorm.swc文件

    Cairngorm是一个轻量级的MVC(模型-视图-控制器)设计模式框架,专门用于构建富互联网应用程序(RIA)。这个SWC文件包含了一系列类、接口和服务,它们为Flex开发者提供了一种结构化的方式来组织和管理代码,从而提高...

Global site tag (gtag.js) - Google Analytics