听到一个网友讲了他的需求,所以花了点时间写了这个东西,顺便开了个博客,以前感觉自己写的东西拿不出来见人,但是这样自己就得不到发展,希望能对入门开发人员有点启示,高手们多加指导,作为一个业余爱好者,大学四年来,网络给予我很多的东西,帮助了我很多,网络作为我大学时代的唯一老师,我很是感激,希望终有一天自己能够为中国的开源程序发展做出丁点(毕竟能力是有限的)。特此感谢其他写程序博客人们,你们每一个都是无私的老师,能够与其他人分享开发的快乐。 同时也祝愿自己能够找到工,克服危机,加油!!! 程序只是展现流程而已,大家自行补充完整,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>
分享到:
相关推荐
Cairngorm是一种轻量级的ActionScript框架,主要用于构建Flex和Adobe AIR应用程序。这个框架是基于模型-视图-控制器(MVC)设计模式,旨在提高应用的可维护性和可扩展性。Cairngorm由Adobe开源社区推出,旨在为开发...
在Flex开发中,Cairngorm框架提供了一种组织应用程序逻辑的方式,它强调了分离关注点,使得业务逻辑、用户界面和数据管理可以独立地进行设计和测试。MVC模式的核心在于将应用的各个部分划分清晰,模型负责处理数据,...
**Cairngorm框架详解** Cairngorm框架是Adobe Flex开发中的一个核心MVC(Model-View-Controller)框架,它为构建可扩展、可维护的富互联网应用程序(RIA)提供了一种结构化的方法。Flex是一种基于ActionScript 3.0...
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是一种专门为Adobe Flex设计的模型-视图-控制器(Model-View-Controller, MVC)架构模式框架。它通过清晰地分离应用逻辑,使得开发更加模块化、可维护性强,并且能够很好地与后端服务进行交互。 ##### 1.1 ...
cairngorm.swc供需要的朋友急用
这个框架的设计目的是为了提高Flex项目的可维护性和可扩展性,通过分离业务逻辑、视图和控制层,使得代码更加模块化。在Cairngorm中,模型(Model)、视图(View)和控制器(Controller)之间的通信是通过事件驱动...
Cairngorm是Flex框架中的一个轻量级MVC(Model-View-Controller)设计模式实现,由Adobe社区成员Stephan J. Schmidt在2005年提出。这个框架旨在提高Flex应用的可维护性和可扩展性,通过分离业务逻辑、用户界面和数据...
Cairngorm是Flex社区中流行的一种轻量级MVC(Model-View-Controller)框架,它提供了一种结构化的方法来组织和管理Flex项目的代码,从而提高开发效率和代码可维护性。 Cairngorm框架的核心组件包括: 1. **模型...
- **定义与背景**:Cairngorm是一种专为Adobe Flex应用程序设计的模型-视图-控制器(MVC)架构模式。它是由Adobe Systems Inc.在2004年推出的一种灵活的应用程序开发框架,用于构建丰富的Internet应用程序(RIA)。...
《cairngorm与LCDs结合应用:最小工程解析》 在Adobe Flex开发领域,cairngorm和LiveCycle Data Services (LCDS)是两个重要的框架和工具,它们各自为开发者提供了强大的功能。cairngorm作为一个轻量级的MVC(Model-...
Cairngorm是Adobe Flex社区中的一个开源框架,主要用于构建大型、可扩展的富互联网应用程序(RIA)。这个框架是基于MVC(Model-View-Controller)设计模式的,旨在提高Flex应用的可维护性和可扩展性。Cairngorm 2.1...
Cairngorm的核心设计理念是基于Model-View-Controller (MVC)设计模式,它将应用程序分为三个主要部分:模型(Model)、视图(View)和控制器(Controller)。这种分离使得代码更易于理解和维护,同时提高了代码的...
Cairngorm框架是Adobe Flex开发中的一种著名轻量级MVC(Model-View-Controller)框架,由Adobe公司的专业团队设计,旨在提高Flex应用程序的可维护性和可扩展性。这个框架的核心理念是通过分离业务逻辑、用户界面和...
标题与描述:“Flex UI 设计对于Cairngorm的重要性” 在深入探讨之前,我们首先要理解Flex UI设计与Cairngorm框架之间的关联性。Flex是一种用于构建和部署跨平台的富互联网应用程序(RIA)的强大技术,它允许开发者...
Cairngorm是Adobe Flex/AIR社区中一个著名的轻量级MVC框架,它为ActionScript 3.0应用程序提供了结构和设计模式,便于开发大型、可维护的项目。这个压缩包包含的是Cairngorm3的实践源码,对于学习和理解Cairngorm3的...
Cairngorm是一个轻量级的MVC(模型-视图-控制器)设计模式框架,专门用于构建富互联网应用程序(RIA)。这个SWC文件包含了一系列类、接口和服务,它们为Flex开发者提供了一种结构化的方式来组织和管理代码,从而提高...