- 浏览: 604031 次
- 性别:
- 来自: 广州
-
文章分类
最新评论
-
wzh051527:
我是大四实习生一个,自我感觉技术能力在第三年。。唯一不明白,为 ...
十年技术,不要再迷茫 -
room_bb:
.hrl文件怎么加入到编译规则里面?比如:pp.hrl文件-d ...
Erlang中用的makefile的一点解释 -
吉米家:
感觉帆软报表的flash打印就很不错哇,特别好用
JSP 实现报表打印 -
雪碧爱芬达:
苦逼程序员的辛酸反省与总结 -
mlyjxx:
...
十年技术,不要再迷茫
接着一个简单的Cairngorm框架例子_01,这节主要是代码的讲解,在了解了Cairngorm框架的原理之后,结合例子讲很快的掌握框架的使用。
1. View(主界面,或调用界面):mxml文件
<?xml version="1.0" encoding="utf-8"?> <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" xmlns:control="CairngormDemo.business.control.*"> // 注意这个导入不能少 <mx:Script> <![CDATA[ import CairngormDemo.business.events.LoginEvent; import CairngormDemo.vo.UserVO; import CairngormDemo.model.LoginModelLocator; import mx.controls.Alert; import com.adobe.cairngorm.control.CairngormEventDispatcher; private function LoginHandle():void { if (this.username.text.length == 0 || this.password.text == null){ Alert.show("用户名不能为空!","错误"); } else if (this.password.text.length == 0 || this.password.text == null){ Alert.show("密码不能为空!","错误"); } else { var user:UserVO = new UserVO(); user.username = this.username.text; user.password = this.password.text; var ev:LoginEvent = new LoginEvent(user); // 触发事件(有一个参数) CairngormEventDispatcher.getInstance().dispatchEvent(ev); // 通过Cairngorm的事件跳转 } } ]]> </mx:Script> <control:LoginControl id="front"/> // 这个也不能少,跟最上面的那个导入的包一致 <mx:Panel width="350" height="250" layout="absolute" horizontalCenter="25" verticalCenter="18" fontSize="13"> <mx:Label x="39" y="25" text="用户名:"/> <mx:Label x="39" y="73" text="密 码:"/> <mx:TextInput x="119" y="23" id="username"/> <mx:TextInput x="119" y="71" id="password" displayAsPassword="true"/> <mx:Button x="39" y="121" label="登录" fontSize="12" click="LoginHandle()"/> </mx:Panel> </mx:Application>
2. 当通过CairngormEventDispatcher.getInstance().dispatchEvent(ev);时间分发后,由Fornt Controller进行捕获,并讲这个事件与对应处理的命令进行映射,代码如下:
package CairngormDemo.business.control{ import com.adobe.cairngorm.control.FrontController; import CairngormDemo.business.commands.LoginCommand; import CairngormDemo.business.events.LoginEvent; public class LoginControl extends FrontController { // 继承于ForntController public function LoginControl(){ super(); addCommand(LoginEvent.LOGIN_EVENT,LoginCommand); // 通过addCommand方法映射 } } }
3. 监听登录的事件,代码如下:
package CairngormDemo.business.events { import CairngormDemo.vo.UserVO; import com.adobe.cairngorm.control.CairngormEvent; public class LoginEvent extends CairngormEvent { // 注意不是继承一般的Event事件 public static const LOGIN_EVENT:String="LoginEvent"; public var user:UserVO = null; public function LoginEvent(user:UserVO) { super(LOGIN_EVENT); this.user = user; // 保存参数 } } }
4. 每个事件对应一个命令,代码如下:
package CairngormDemo.business.commands { import CairngormDemo.business.delegates.UserDelegate; import CairngormDemo.business.events.LoginEvent; import com.adobe.cairngorm.commands.Command; import com.adobe.cairngorm.control.CairngormEvent; import mx.rpc.IResponder; public class LoginCommand implements Command, IResponder { public function execute(event:CairngormEvent):void{ // 通过这个方法接受事件 var userDelegate:UserDelegate = new UserDelegate(this); // 委托给UserDelegate 处理具体 var loginEvent:LoginEvent = event as LoginEvent; userDelegate.Login(loginEvent.user); // 调用委托中的方法,这里有一个参数 } // 返回的结果进行处理 public function result(data:Object):void{ var result:String=data.toString(); if(result=="OK"){ Alert.show("登录成功!"); } else { Alert.show("登录失败!"); } } // 处理过程出错时的处理 public function fault(info:Object):void{ Alert.show(info+""); } } }
注:上面的代码是在与后台进行交互的时候需要委托处理,在不需要与后台交互时,直接使用execute方法进行处理业务
5. 代理主要是通过Services来跟后台交互,此处只是简单的处理了一下,如下:
package CairngormDemo.business.delegates { import mx.rpc.IResponder; import CairngormDemo.model.LoginModelLocator; import CairngormDemo.vo.UserVO; public class UserDelegate { private var responder:IResponder; public function UserDelegate(responder:IResponder) { this.responder = responder; } public function Login(user:UserVO):void { // 获取事件传递的参数,然后进行简单的验证 var result:Object; if (user.username=="lzc" && user.password=="123"){ result="OK"; } else { result="Fail" } responder.result(result); } } }
6. 剩下一个VO类了,只是一个简单的类,存放了用户名、密码两个属性。
package CairngormDemo.vo { public class UserVO { public var username:String; public var password:String; } }
7. 除了上面讲述的,还剩下一些这个列子没有用到,比如:ModelCrontal,它是一个单例模式,保证系统中只有一个类的实例,节省了内存资源。此外,它还保存了将在系统用到的一些结构,比如:存放临时数据的实体等等。
package CairngormDemo.model { import com.adobe.cairngorm.model.ModelLocator; import CairngormDemo.vo.UserVO; [Bindable] public class LoginModelLocator implements ModelLocator { private static var loginModelLocator:LoginModelLocator; // 私有 public static function getInstance():LoginModelLocator { // 单例模式 if (loginModelLocator == null) { loginModelLocator = new LoginModelLocator(); } return loginModelLocator; } public var NowUser:UserVO = new UserVO(); // 用于保存当前登录用户信息的变量 } }项目的结构:
这就是一个简单的采用Cairngorm框架的登录系统,利用突出了框架的优势,将各个模块之间的解耦,很好的提高了软件的质量,同时,它更加清晰了程序的层次,让我们一目了然。
发表评论
-
as3 Loader 加载资源后内存泄露无法释放的问题。
2014-06-21 10:30 710as3 Loader 加载资源后内存泄露无法释放的问题。 ... -
as3判断flash player版本的函数
2014-06-10 20:35 863//判断当前版本是否高于9.0.115.0为例子. pr ... -
CSS 中文字体的英文名称 (simhei, simsun) 宋体 微软雅黑
2014-04-03 15:25 1074华文细黑:STHeiti Light [STXihei]华文 ... -
as3.0的垃圾回收机制
2013-09-07 14:02 1566还是同样的博客,还是同样的作者(Daniel Sidhio ... -
AIR程序多开
2013-09-07 13:55 1031AIR应用通常不能像QQ那样能进行多开操作。为了让一个用AI ... -
starling性能优化总结
2013-07-22 14:06 1501在项目开发的过程中总结了一下starling的性能优化方案: ... -
AS3 Socket从零开始
2013-07-22 12:54 1133大家如果想学AS3 Socket直接在百度里搜一下,会找到很 ... -
绕开AS3安全沙箱 跨域加载SWF
2013-07-11 12:53 941AS3的安全沙箱的确是� ... -
解决AS3在ie中初始化时stageWidth和stageHeight为0
2013-06-14 09:23 1062先看下面的一段脚本,这是比较经典的初始化脚本: pac ... -
动态获取swc中的类
2013-05-25 10:32 1006想通过代码生成,来获取swc中的类,并且可以作为普通类正常使 ... -
AS3 中字符串的format功能实现
2013-05-25 10:19 868使用C#的朋友都知道,string.Format();还是挺 ... -
总结调用Flash的几种方法
2013-05-02 16:18 1699一、Adobe 提供的方法 <object wi ... -
Flash3D错误集锦
2013-05-02 14:03 979VerifyError: Error #1014: 无法找到 ... -
使用scale拉伸之后的坐标问题
2013-04-12 09:38 1328最近发现论坛多了很多 ... -
30个实用的网页设计工具
2013-03-20 09:58 869作为一位网页设计师或开发者,你一直需要搜寻获取强大的网页设计 ... -
如何成为强大的程序员?
2013-03-11 11:27 757Aaron Stannard是新创公 ... -
漫谈重构
2013-03-11 11:09 919因为工作内容的原因, ... -
AS3使用谷歌API生成二维码
2012-12-10 16:24 1391二维码在新闻杂志,网站,网络广告,电视广告等地方随处可见 ... -
OOP的聚合原则
2012-12-10 16:21 957什么是聚合? 聚合可以很好地表达对象是什么和做 ... -
压缩速率追踪
2012-11-02 14:16 1504Flash Player 11.3添加了一个压缩和解压B ...
相关推荐
"Flex-cairngorm-demo我喜欢的"是一个基于Cairngorm框架的示例项目,开发者对其表现出了浓厚的兴趣。 Cairngorm的核心概念包括: 1. **Model**: 模型层负责处理业务逻辑和数据管理,通常与后端服务进行交互。它保持...
Flex Cairngorm和Parsley是两种在Adobe Flex框架中广泛使用的MVC(Model-View-Controller)设计模式实现库,它们主要用于构建大型、复杂的富互联网应用程序(RIA)。本源码Demo提供了这两种技术的集成应用实例,帮助...
Cairngorm框架的核心组件包括: 1. **模型(Model)**:存储应用程序的数据,与业务逻辑层交互,通常是ActionScript类。 2. **视图(View)**:显示用户界面,通常由Flex组件构成,负责呈现模型数据。 3. **控制器...
通过这个入门示例,你将学习如何设置Cairngorm框架,创建命令,订阅和发布事件,以及如何在Flex应用中有效地组织代码。实践这个项目将帮助你深入理解MVC模式以及Cairngorm如何支持它。记得在学习过程中,不断尝试...
在“Cairngorm实例 - 管理人员的一个demo”中,我们可以通过实际操作来了解Cairngorm框架的核心概念和工作流程。 首先,Cairngorth框架的核心组件包括: 1. **Controller**:控制器负责处理用户交互,它是视图和...
在深入探讨Cairngorm框架的实践应用之前,我们首先要理解Cairngorm是什么。Cairngorm是Adobe Flex社区开发的一个MVC(Model-View-Controller)设计模式的实现,主要用于构建富互联网应用程序(RIA)。这个框架以其轻...
Flex开发技巧主要涉及的是使用Adobe的Cairngorm框架进行MVC架构的开发。Cairngorm是一个轻量级的框架,旨在帮助开发者更有效地组织和管理ActionScript 3.0项目的代码,尤其是在大型Flex应用中。以下是关于Cairngorm...
【Cairngorm框架详解】 Cairngorm是一种基于MVC(Model-View-Controller)设计模式的ActionScript和Flex应用程序开发框架。它为大型、复杂的企业级Flex应用提供了结构和组织,帮助开发者更好地管理代码,提高代码...
博客链接 "<https://demojava.iteye.com/blog/1337126>" 可能包含了关于如何使用Cairngorm和FABridge的实际示例或教程,可能涵盖如何设置项目、创建命令、监听事件以及如何利用FABridge进行跨技术通信等内容。...
使用flex 4.5 + Spring 3.0 + Hibernate 3.3 + Cairngorm 2.2.1 + BlazeDS 3.3.0 + Spring BlazeDS Integration 1.0.3整合出的一个登录的小demo·
通过研究这个示例,你可以学习如何在实际项目中使用Cairngorm框架来组织代码,理解MVC模式在Flex中的应用,以及如何通过事件驱动来协调不同组件的工作。同时,你还可以学习到如何利用Cairngorm提高团队协作效率,...
总的来说,这个项目涉及了C#编程、Silverlight开发、Cairngorm框架的理解和移植,以及RIA设计原则等多个方面,对提升.NET平台上RIA应用的开发能力具有重要价值。通过深入研究和实践,开发者不仅可以掌握Cairngorm在...
Cairngorm框架虽然经典,但是有些很严重的问题: 1.不支持通知视图. Cairngorm2.1之前可以用ViewHelper 和 ViewLocator,但是自从Cairngorm2.1开始已经不推荐了.而且 ViewHelper和ViewLocator 方式本身就违反MVC. 2...
4. Cairngorm框架:Cairngorm是Flex中的一种MVC(Model-View-Controller)设计模式实现,它简化了大型Flex应用的结构和组织。在Flex与Spring整合中,Cairngorm可以帮助管理客户端的业务逻辑,与Spring的后端服务进行...
- **Cairngorm框架**:Cairngorm是一个用于构建大型Flex应用的MVC框架。 - **设计理念**:介绍Cairngorm的设计理念及其在Flex开发中的作用。 #### 33. Cairngorm之组成部分 - **ModelLocator**:ModelLocator是...
- **Cairngorm简介**:介绍Cairngorm框架,一种用于构建Flex应用程序的MVC框架。 - **组成部分**:解释Cairngorm的核心组成部分及其功能。 - **环境准备**:列出使用Cairngorm所需的环境配置。 #### 28. Demo15: ...
- **框架介绍**:Cairngorm是一个广泛使用的Flex MVC框架,可以简化大型应用程序的开发过程。 - **组成部分**:详解Cairngorm的核心组件及其作用。 - **环境配置**:提供详细的指南,帮助开发者搭建Cairngorm的开发...
- **Part3实现Spring ActionScript Cairngorm Demo Lib**: - 构建MVC目录结构。 - 实现模型层(Model)。 - 创建自定义事件。 - 构建视图(View)。 - 实现代理(Proxy)。 - 实现命令(Command)。 - 实现...
Demo15:Cairngorm - **实现**: - 分解应用为模型、视图和控制器三个部分。 - 使用命令模式来处理事件。 以上内容覆盖了从 Flex 基础知识到高级主题的广泛领域,旨在帮助读者全面掌握 Flex 开发的关键技术和...
书中通过具体的Demo,如进度条的数据绑定,详细解释了数据绑定的原理和实现方法。同时,事件处理也是Flex开发中不可或缺的一部分,书中不仅讲解了Flex中的事件机制,还通过实例展示了如何创建和处理自定义事件,以及...