听到一个网友讲了他的需求,所以花了点时间写了这个东西,顺便开了个博客,以前感觉自己写的东西拿不出来见人,但是这样自己就得不到发展,希望能对入门开发人员有点启示,高手们多加指导,作为一个业余爱好者,大学四年来,网络给予我很多的东西,帮助了我很多,网络作为我大学时代的唯一老师,我很是感激,希望终有一天自己能够为中国的开源程序发展做出丁点(毕竟能力是有限的)。特此感谢其他写程序博客人们,你们每一个都是无私的老师,能够与其他人分享开发的快乐。 同时也祝愿自己能够找到工,克服危机,加油!!! 程序只是展现流程而已,大家自行补充完整,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例子Cairngorm例子Cairngorm例子Cairngorm例子
什么是Cairngorm,内部MVC结构,Cairngorm的各个部分
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 ...
Flex框架Cairngorm经典案例源码 完全掌握Cairngorm
cairngorm.swc供需要的朋友急用
flex框架之Cairngorm框架,一个用Cairngorm与后台通信实例
Cairngorm框架配置是flex的前端一个框架
cairngorm框架是flex界的mvc框架,传统的flex开发方法开发的代码难以维护。 这个是cairngorm的中文版入门讲解
cairngorm与lcds结合应用的最小工程包,适合研究cairngorm 与lcds的用户
Flex开发框架cairngorm入门实例教程,有需要的人可以看一下
一个 Flex+J2EE实例(cairngorm+blazeDS+hibernate+spring) 本实例为一个 flex 与 java通信项目。前端采用cairngorm框架,后台 采用hibernate+spring 每个部署 步骤,附详细 图文解释。旨在 采用 一种快速开发 ...
Cairngorm開發架構 Cairngorm前生是Itereation:Tow公司的一個開源項目,是FLEX開發的實踐框架。在Cairngorm基礎上開發RIA,將會提高FLEX的程序的條理性、維護性和擴展性。當adobe公司推出Flex2和Action Script3的時...
Cairngorm 源码 Cairngorm 源码 Cairngorm 源码
前台FLex工程(单独工程Cairngorm)使用Cairngorm框架与后台java工程(FLexToJava)进行数据交互。功能点: ①flex提交表单保存到数据库; ②flex向后台请求,后台返回List集合,flex将集合填充到combox 附带:...
Flex MVC框架cairngorm 入门
Cairngorm.swc文件 构建Cairngorm框架必须的包
Flex login flex cairngorm
cairngorm架构描述,包含直观的描述cairngorm架构的流程图
Cairngorm框架在Flex开发中的应用研究
flex例子使用Cairngorm框架。