cairngorm入门案例.doc_第1页
cairngorm入门案例.doc_第2页
cairngorm入门案例.doc_第3页
cairngorm入门案例.doc_第4页
cairngorm入门案例.doc_第5页
已阅读5页,还剩4页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

Flex开发框架cairngorm入门实例2010-05-27 19:51Cairngorm是flex开发的mvc框架,现在在 adobe旗下。它架构和eclipse插件开发gef架构很相似,具体工作原理如下:该框架就是一个Cairngorm.swc文件,大家可以到Cairngrom的官方网站上去下载,我在这里提供地址:/wiki/display/cairngorm/Cairngorm然后新建一个Flex工程,有一个Cairngrom.swc包一定要引进去才行(一般放在libs文件夹里面),或者直接 在build path中加入该包。下面通过一个实例来说明Cairngorm框架如何使用。我们做一个简单的图书录入显示功能,做完后界面如下:flex工程结构如下:第1步:定义VO,不妨假定一本书包含书名,作者,和单价。代码如下,文件名为BookVO.aspackage com.dobodo.vopublic class BookVOpublic var bookName:String;public var bookAuthor:String;public var bookPrice:String;public function BookVO()第 步:创建ModelLocator,该类为单例模式,用来放整个应用的数据。package com.dobodo.modelimport mx.collections.ArrayCollection;public class ModelLocatorstatic private var _instance:ModelLocator=null;Bindablepublic var BookAC:ArrayCollection = new ArrayCollection();static public function getInstance():ModelLocatorif(_instance = null)_instance=new ModelLocator();return _instance;第3步:现在我们就要开始设计我们的视图了,即我们的界面效果,它是一个Component,。文件名为:BookAdd.mxml第 4步:继承我们的CairngormEvent,创建我们的自定义事件,这里我们不妨给它取名为AddBookEvent,即增加图书事件, 该事件的触发行为是“添加”按键的单击,值得一提的是,该事件需要传递数据,所以我们给它一个bookVO的变量。其文件名 为:AddBookEvent.as,其代码如下:package com.dobodo.eventimport com.adobe.cairngorm.control.CairngormEvent;import com.dobodo.vo.BookVO;public class AddBookEvent extends CairngormEventpublic var bookVO:BookVO;public static const EVENT_ADD_BOOK:String =addBook;public function AddBookEvent(bookVO:BookVO)super(AddBookEvent.EVENT_ADD_BOOK);this.bookVO = bookVO;第步:在视图中添加触发事件的代码,当 “添加”按钮单击时,我们触发一个函数,在该函数中最重要的两句为: Actionscript代码var event : AddBookEvent = new AddBookEvent ( bookVO ) ;CairngormEventDispatcher.getInstance().dispatchEvent( event ) ;这两句表示新建了一个AddBookEvent,并且向外发送了这个事件,这个事件发送之后,我们的前台控制器便可以接收到。详细代码请参考第三步中的BookAdd.mxml代码。第步:前端控制器接收并映射到某一个Command处理,其文件名为AddBookControl.as,其代码如下:package com.dobodo.controllerimport com.adobe.cairngorm.control.FrontController;import mand.AddBookCommand;import com.dobodo.event.AddBookEvent;public class AddBookControl extends FrontControllerpublic function AddBookControl()addCommand(AddBookEvent.EVENT_ADD_BOOK, AddBookCommand);第步,该前台控制器把这个事件映射到了一个名叫AddBookCommand的command上,由这个command去处理所有的事件逻辑,这个 command需要实现两个接口,一个接口为Command,另一个为Responder,Command接口对应着execute方 法,IResponder接口对应着Result和Fault方法,这两个是个回调函数,如果服务端传过来正确的数据对象,就将执行实际的Result函数,如果错误的数据对象,就执行fault函数。为了完整地演示我们Cairngorm框架的运行机理,在execute方法中 还用到了代理,但对于这个例子来说,这并不是必须的,代理一般是在需要与服务器端交互数据时才会用到。package mandimport mands.ICommand;import com.adobe.cairngorm.control.CairngormEvent;import com.dobodo.business.BookDelegate;import com.dobodo.event.AddBookEvent;import com.dobodo.model.ModelLocator;import com.dobodo.vo.BookVO;import mx.rpc.IResponder;import mx.controls.Alert;public class AddBookCommand implements ICommand, IResponderpublic function execute(event:CairngormEvent):voidvar book:BookVO=(event as AddBookEvent).bookVO;var bookDelegate:BookDelegate = new BookDelegate(this); /委托给BookDelegate处理具体bookDelegate.addBook(book);/ 根据BookDelegate返回的结果进行处理 public function result(data:Object):voidvar book:BookVO = data as BookVO;if(book!=null)Alert.show(增加成功!);elseAlert.show(增加失败!);public function fault(event:Object):void 第8步,让我们看一下这个代理类的实现。定义代理的文件名为BookDelegate.as,代理类一般负责处理和服务器的交互。其代码如下package com.dobodo.businessimport com.dobodo.vo.BookVO;import com.dobodo.model.*;import mx.rpc.IResponder;import mx.rpc.events.ResultEvent;public class BookDelegateprivate var model:ModelLocator = ModelLocator.getInstance();private var responder:IResponder;public function BookDelegate(responder:IResponder)this.responder = responder;public function addBook(bookVO:BookVO):void/这里可以调用处理业务逻辑的类,比如调用远程的数据库操作类,把book插入到数据库里。if(bookVO.bookName!=)model.BookAC.addItem(bookVO);responder.result(bookVO);/返回给commandelser

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论