- 浏览: 906613 次
- 性别:
- 来自: 青岛
文章分类
最新评论
-
chienchia:
请问下,第4步,vpn做了什么使数据包发送到真实网卡,而不会再 ...
如何使用Android系统自带的VPN服务框架 -
fangyafenqidai:
我只要选第二个就可以呢,怒需要选第一个。之后不会有啥问题。正常 ...
Android Studio 超级简单的打包生成apk -
michaelye1988:
不错,很棒!
getcachedir和getexternalcachedir的区别 -
whlei01:
文章棒棒哒
常用的AS3代码 -
whlei01:
很不错 之前打开及时600M的内存 ,现在打开只有300兆了 ...
flash builder内存不够的解决办法
最近工作中需要用到FLASH,开发框架中又是以PureMVC为主。MVC是有了解,但是PureMVC这个之前则是从没接触过。那就学呗~~
说学就学,可是第一步就让我感觉很费事~~(哎~菜鸟当久了)。要开始学,得先下个PureMVC框架装上吧。找了半天PureMVC 框架,下载下来后,发现是一个压缩包,大小只有几百K(心存怀疑,怎么这么小呀)。解压之后,根据惯性开始寻找一个类似Setup的东东。狂汗,就是找不到这个东西。这下我认定刚才下错东西了。于是,在网上又是一阵狂搜,结果证明自己没下错。-_-!!!
下载链接:http://trac.puremvc.org/PureMVC_AS3/
第二步,开始安装PureMVC。没有setup,怎么装呢?是不是添加引用就可以了呢?可是又该怎么添加呢?(我用得是 FlashDevelop这个编辑AS的软件)网上又是一阵狂搜,可搜到的都是谈论PureMVC的架构怎么样或者pureMVC具体应用怎么写,就是没有介绍刚开始该怎么配置的。“最危险的地方就是最安全的地方”,结果在PureMVC的下载页内找到了“Installation ”字样。其中的大概做法,就是解压,然后将 “PureMVC_AS3_2_0_4.swc ”添加到项目的库中。因为,我用的是FlashDevelop,所以添加方法如下:选中项目的lib文件夹-》右键添加存在的文件-》选择PureMVC_AS3_2_0_4.swc-》右键单击添加进来的这个文件-》选择添加到库中(Add To Library)。这样便可以算前期工作全部结束了。
第三步,查找关于PureMVC的介绍,补一下理论知识。这些东西,网上超多,我就不介绍了。提供几个链接,供大家学习。
最佳实践[中文版]:http://puremvc.org/component/option,com_wrapper/Itemid,183/
PureMVC教程[英文]:http://www.actionscriptdeveloper.co.uk/puremvc-tutorial-flex-puremvc-jabber-and-xiff-3-introduction/
简单的说,PureMVC源于MVC模式,主要就是Model、View、Controller这三层次。但在PureMVC中上述三个都被封装成了三个核心层,并通过单例模式提供给应用程序。开发人员不需要直接使用这三个核心层。PureMVC为了简化开发复杂度,提供了一个Facade类,该类提供了与核心层通信的唯一接口,可以初始化上述三个核心层,并可以访问它们的public方法,同时该类也是以单例模式提供给应用程序。开发人员只需要继承一个 Facade类并创建具体的Facade类就可以实现整个MVC模式。除了知道Facade类之外,还需要了解与三个核心层相辅助的三个类:Proxy、 Mediator、Command。
Proxy,可以理解为代理,负责操作数据的存取。
Mediator,可以理解为媒介,负责UI层与控制层之间的沟通。
Command,则是用来操作具体的业务逻辑。
为了对这三个核心层尽量的解耦,PureMVC中采用了消息机制,层与层之间的通信通过发送消息(notification)来实现。消息发送者只需要实现发送,不需要知道谁会接收这些消息。消息接收者如果需要接收消息,只需要注册一下对应的消息就可以了。如:registerCommand(START_UP, StartUpCommand);这句话产意思就是注册了一个对应关系,其中START_UP是消息的名称,StartUpCommand则是一个 Command,这样当有人发送了START_UP名称的消息后,就会由StartUpCommand进行处理。
第四步,动手写自己的Demo(在我的这个Demo中,实现功能很简单:记录每次鼠标单击时在X方向上的偏移量)。
1)创建一个新的项目,就叫做 "MyFirstPureMvc” 吧。新创建的项目,应该可以看到bin、lib、src这三个文件夹,在src下有一个main.as文件,bin下有一些用于呈现网页的文件(项目中基本不需要用到)。
2)在lib文件夹中添加PureMVC_AS3_2_0_4.swc,并添加到库中。
3)在src文件夹中添加三个子文件夹:Model、View、Controller。Model文件中放置MouseClickProxy.as文件。View中放置 StageMediator.as文件。Controller中放置StartUpCommand.as和MouseClickCommand.as这两个文件。具体内容,请看下面。
4)在src文件夹中接着添加ApplicationFacade.as文件,名称可以不一样。这个主要是用来继承Facade类的。如果你了解了基本的PureMVC框架结构之后,应该明白Facade这个类的重要性。
package { import org.puremvc.as3.patterns.facade.Facade; import controller.* /** * Facade模式来实现统一的接口,对外只提供了startup方法用于启动 * 在该类被创建的时候会自动调用initializeController方法,需要在该方法中对Command进行注册 * 接着,调用startup 方法启动(也就是发送一个消息,因为之前已经注册了Command,所以相应的方法会去执行execute进行响应)。 * @author */ public class ApplicationFacade extends Facade { public static const START_UP:String = "START_UP"; public static const MOUSE_CLICK:String = "MOUSE_CLICK"; public static function getInstance(): ApplicationFacade { if (instance == null) { instance = new ApplicationFacade(); } return instance as ApplicationFacade; } public function startup(app:Object):void { sendNotification(START_UP, app); } override protected function initializeController():void { super.initializeController(); registerCommand(START_UP, StartUpCommand); registerCommand(MOUSE_CLICK, MouseClickCommand); } } }
上述语句中的initializeController方法中首先初始化了Controller控制器,并建立了Command与消息之间的映射关系。然后调用startup启动整个程序。在sendNotification中,发送了一个名为START_UP的消息。并传递了一个app对象。
根据注册的关系,StartUpCommand类会接收到这个消息。
package controller { import flash.display.Stage; import model.MouseClickProxy; import org.puremvc.as3.interfaces.INotification; import org.puremvc.as3.patterns.command.SimpleCommand; import view.StageMediator; /** * 这个类中主要就是需要重写父类中的execute方法 * 在这个方法中进行主要的业务逻辑处理 * @author */ public class StartUpCommand extends SimpleCommand { override public function execute(notification:org.puremvc.as3.interfaces.INotification):void { //startupCommand有一些特殊,这个command主要是用于启动这个项目,所以在这个项目中主要是注册一些此后会用于的proxy和mediator //注册一个代理,主要用于操作数据,比如获取数据,写入数据等 //注册一个mediator,主要是用做与UI通信的媒介,即从UI接收用户事件,和向用户呈现数据 facade.registerProxy(new MouseClickProxy()); var stage:Stage = notification.getBody() as Stage; facade.registerMediator(new StageMediator(stage)); } } }
在这个类中,主要实现了父类的execute方法。在该方法中注册了一个代理和媒介。这两个东东,在随后的程序运行中需要使用,所以要进行一下注册。注册了之后,接下去如果要使用则直接可以从facade中获取。
接着来看下 StageMediator.as,这个东东关系到我们的View视图,与我们可以看得到的UI密切相关。我们在UI上触发的一些事件会由这个 StageMediator类接收(并进行简单的封装)后发送给控制层去处理。
package view { import flash.display.Stage; import flash.events.MouseEvent; import org.puremvc.as3.patterns.mediator.Mediator; /** * 媒介,主要用于监听用户在UI上触发的事件,然后传递消息给controller或proxy。 * 同时也负责向UI上呈现数据 * @author */ public class StageMediator extends Mediator { public static const NAME:String = "STAGE_MEDIATOR"; public function StageMediator(viewComponent:Stage) { //注册监听,从而获取UI上的事件 viewComponent.addEventListener(MouseEvent.CLICK, mouseClick); } private function mouseClick(event:MouseEvent):void { sendNotification(ApplicationFacade.MOUSE_CLICK, event.localX); } } }
在mouseClick事件中,又发送了一个通知,通知的消息为MOUSE_CLICK。另一个是鼠标的单击时的X方向上偏移量。看一下 ApplicationFacade类中注册的信息,可以找到与消息对应的类是MouseClickCommand。
package controller { import org.puremvc.as3.interfaces.INotification; import org.puremvc.as3.patterns.command.SimpleCommand; public class MouseClickCommand extends SimpleCommand { override public function execute(notification:org.puremvc.as3.interfaces.INotification):void { var localX :Number = notification.getBody() as Number;//获取之前传的参数 trace(localX); } } } 在这个类中,就输出了X方向上偏移量。 接下来,你只需要ctrl+enter测试就可以了。 是不是很奇怪,从头到尾都没有用过Model层,是的,这可能是我这个DEMO的缺陷,因为我这个Demo中不需要查询数据库或其它数据存储区来获取或写入数据,因此并没有使用到。 上面的整个过程,只起到一个简单的演示作用。如果大家需要深入学习,建议大家参考网上达人们的文章。
- MyFirstPureMvc.rar (30.6 KB)
- 下载次数: 51
发表评论
-
as3中颜色矩阵滤镜ColorMatrixFilter的使用
2015-05-11 15:32 1259public static function chan ... -
AS3.0 关于用URLLoader加载外部图片
2015-04-02 17:09 975很多人都想当然的直接用URLLoader加载外部图片然后通 ... -
Flash AS3 让<鼠标点击>穿透上层透明区域,下层对象触发<鼠标点击>事件
2017-10-24 13:54 941问题描述:1. 在Stage上放置2个Sprite, A ... -
关于 AS3 Socket 通信基础(六)
2017-10-24 14:02 7276.处理使用Sockets时候引发的错误. 在程序 ... -
关于 AS3 Socket 通信基础(五)
2015-04-01 16:50 8455.与Socket服务器断开,或者当服务器想与你断开的时候发 ... -
关于 AS3 Socket 通信基础(四)
2015-04-01 16:50 7404.同Socket服务器进行 ... -
关于 AS3 Socket 通信基础(三)
2015-04-01 16:49 12543.从Socket服务器读数据 ... -
关于 AS3 Socket 通信基础(二)
2015-04-01 16:49 953对于Socket对象来说,通过 ... -
AS3 Socket 通信基础(一)
2015-04-01 16:48 1062我们先来搞清几个概念,这有助于我们更加了解网络通信! 1、 ... -
as3.0针对两个独立swf的通信有个专门的类-----LocalConnection
2015-01-16 17:43 1999as3.0针对两个独立swf的通信有个专门的类-----Lo ... -
检测FlashPlayer版本的代码
2014-12-22 14:17 779var versionString:String = Cap ... -
as3.0中复制mc影片剪辑的方法
2014-05-23 16:17 1030方法1——反射方法: var ClassRef:Class ... -
as3类库大全
2014-05-04 16:14 836类库大全地址: http://www.adrianparr ... -
AIR版截屏跟QQ截屏一样 (源码)
2014-04-14 16:54 948两个Demo,一个是Flex项目,另一个是ActionScri ... -
AS3将网址加入收藏夹
2014-01-20 14:22 1067AS3: ExternalInterface.call(& ... -
FLASH AS3 TextField 文本超链接控制示例(新闻列表)
2013-10-30 15:23 1091这两天想自行设计一个唐酷的AS3+XML新闻列表(http:/ ... -
AS3动态文本框支持单击事件
2013-10-30 15:21 1144AS3动态文本框支持单击事件 用TextEvent.LINK ... -
AS3 变灰的代码
2013-08-23 15:32 773var filter:Filter = new ColorMa ... -
AS3 String to Date
2013-08-12 15:57 1731var formatterString:String = &q ... -
greensock又出重量级产品 - LoaderMax
2013-05-27 11:30 12301、线性化下载过程 一般的下载队列,是一口气推入n个load ...
相关推荐
标题 "PureMVC 中文版" 指的是 PureMVC 框架的一个中文版本,这是一款广泛应用的开源框架,特别设计用于构建富互联网应用程序(RIA),尤其是基于Adobe Flex和ActionScript 3的项目。PureMVC 提供了一种模块化、结构...
标题中的“可以运行的PureMVC的登陆实例”是指一个基于PureMVC框架的登录功能实现,这个实例已经经过验证可以在FlexBuilder3环境下正常运行。PureMVC是一种经典的多层应用架构模式,它为ActionScript、JavaScript、...
这个是一个根据AS3(ActionScript 3) pureMVC而转换过来的lua pureMVC。所有的接口完全跟AS3版本一致。 若是想使用,可以直接查看网上的pureMVC 文档,我并未对任何一个函数改名或者更换参数位置。 注意,这个PureMVC...
标题中的"PureMVC_CSharp.zip_csharp_pureMVC_pureMVC C_pureMVC C#"表明这是一个关于C#语言实现的PureMVC框架的压缩包。"疯铮铮"可能是作者或分享者的名字,也可能是对项目热情的表达。 描述中提到的"PureMVC_...
PureMVC是一个开源的、轻量级的框架,主要用于构建多层应用程序,尤其适用于富互联网应用(RIA)的开发。这个框架是基于Model-View-Controller(MVC)设计模式的,它提供了一种结构化的解决方案,使得开发者可以更...
**纯MVC(PureMVC)AS3版详解** PureMVC是一款轻量级的框架,主要用于实现Model-View-Controller(MVC)设计模式。它最初由Dan Varga创建,旨在提供一种跨平台的解决方案,使开发人员能够更有效地组织和管理应用...
**PureMVC框架详解** PureMVC是一种轻量级、模型-视图-控制器(MVC)框架,最初是为ActionScript开发的,后来被移植到多种编程语言中,包括C++。它提供了一种组织代码结构的方式,使得开发者可以更高效地构建可维护...
PureMVC是一个开源的、轻量级的MVC(Model-View-Controller)框架,它最初是为ActionScript设计的,但后来发展出了多种语言版本,包括C#。本压缩包"PureMVC.rar"提供了PureMVC在C#平台上的实现,包括单线程版和多...
PureMVC是面向对象的多层应用程序框架,它提供了一种模式来组织代码,使开发更加规范和高效。本篇文章将深入探讨Unity中如何使用PureMVC框架,以及它如何帮助实现UI和逻辑的分离。 PureMVC是一个轻量级的框架,其...
《深入理解PureMVC:基于五子棋游戏的源码分析》 PureMVC是一个流行的、开源的、轻量级的、跨平台的MVC框架,它为开发人员提供了一种结构化的编程模式,用于组织和管理应用程序的业务逻辑、用户界面和数据。在这个...
标题中的“一个很好的puremvc实例”表明我们即将探讨的是关于PureMVC框架的实际应用案例。PureMVC是一个轻量级的、跨平台的MVC(Model-View-Controller)设计模式实现,它主要应用于创建复杂但组织良好的应用程序...
PureMvc是一个开源的、轻量级的框架,用于构建多层结构的富客户端应用程序。它遵循Model-View-Controller(MVC)设计模式,并提供了一种标准化的方式来组织和协调应用程序的各个部分。在这个名为"MyFirstPureMvc"的...
Qt版本的PureMVC是一个基于设计模式的框架,主要用于构建可维护性和可扩展性极高的应用程序。这个框架的实现是将经典的MVC(Model-View-Controller)模式应用于Qt编程环境,为Qt开发者提供了一种结构化的方法来组织...
纯MVC(PureMVC)是一个轻量级的框架,用于构建基于模型-视图-控制器(Model-View-Controller)设计模式的应用程序。这个框架最初是为ActionScript编程语言设计的,但后来被移植到了多种其他编程语言中,包括Java、...
如你下载后的存放的目录是D组:/下载,解压后将创建一个名为PureMVC_AS3_2_0_4的文件夹(注:其中的2_0_4是版本号) ; 打开PureMVC_AS3_2_0_4文件夹,您会发现里面有三个文件夹: asdoc :对应于API的文档,它的首页...
PureMVC是一个多范式、轻量级的框架,它主要设计用于构建应用程序的模型-视图-控制器(MVC)结构。这个框架的核心理念是将应用程序的不同部分解耦,以便于开发、维护和扩展。在C++版本的PureMVC中,它充分利用了面向...
纯MVC(PureMVC)是一个轻量级的框架,主要设计用于构建应用程序的模型-视图-控制器架构。这个框架最初是为ActionScript 3编程语言开发的,但现在已经被移植到许多其他编程语言,包括Java、C#、Python、JavaScript等...
PureMVC C#框架是一种基于模型-视图-控制器(MVC)设计模式的轻量级应用框架,专为C#编程语言设计。这个框架旨在提高软件开发的组织性和可维护性,通过分离业务逻辑、用户界面和应用程序数据,使得开发者能够更高效...
【PureMVC学习指南】 PureMVC是一款轻量级的框架,主要应用于Flex和AS3开发,它基于经典的Model-View-Controller(MVC)设计模式,为开发者提供了一种组织代码、解耦组件的强大工具。PureMVC的核心理念是通过分离...
PureMVC是一个开源的、轻量级的、跨平台的模型-视图-控制器(Model-View-Controller,MVC)框架,适用于构建各种类型的应用程序,尤其在富互联网应用程序(Rich Internet Applications,RIA)领域中表现突出。...