`

[转] PureMVC心得教程:使用puremvc框架实现的贪吃蛇

阅读更多
http://bbs.9ria.com/viewthread.php?tid=73554&extra=page%3D1%26amp;orderby%3Ddateline%26amp;filter%3D2592000

其实也只是我初用puremvc的心得。大多数理论查看资料验证过,不会误人子弟。
不是绝对理论化的东西。所以最好不要太过纠结了。内含详细注释。
应该可以让没有接触过此框架的同学们瞬间学会如何使用。

Puremvc的好处在什么地方:
mvc合理的区分可以便于扩展和维护,但是实际估计流水线上的同学们往往体会不到这种乐趣了。

不过个人认为Notification比event的优势在于无需提供消息发生者,从而在监听时也无需获得消息发出者的引用,从而降低耦合性
(换句话说应该叫降低设计降低系统耦合性的难度)。

一般推荐尽量封装mediator和proxy,然后使用command来调用方法实现view和model的通讯
这个游戏一般一条程序逻辑是
由view层发出请求(sendnotification),command监视到notification后,自动响应excute方法。在方法中获得所需proxy和media的引用,调用它们封装的api传递请求给proxy,proxy处理完数据后,再把更新的数据用notification带参数的形式发送到view层。View层可以直接在mediator中监听notification也可以还是通过command的形式处理业务逻辑。

数据处理的逻辑放在了model层。因为这个游戏是基于“贪吃蛇”,而不是基于”可以无穷变换的区块逻辑”。


Puremvc工程搭建心得
1.实例化一个applicationFacade

[code="java"]facade = ApplicationFacade.getInstance();
facade.sendNotification(ApplicationFacade.STARTUP, this);


这里的this就是应用程序顶层视图。

[code="java"]applicationFacade类一般小项目的写法都很类同。
override protected function initializeController():void
{
   super.initializeController();
   registerCommand(ApplicationFacade.STARTUP, StartupCommand);
}


这个StartupCommand往往也是添加两个子command

[code="java"]addSubCommand(ModelPrepCommand);
addSubCommand(ViewPrepCommand);


两个子command也都会按照FIFO原则先后触发

[code="java"]facade.registerProxy( new DataProxy() );//注册数据模型代理


和注册主视图

[code="java"]var main:Main = notification.getBody() as Main;
facade.registerMediator( new ApplicationMediator(main) );
     

主视图一般负责注册子视图,并且将视图组件添加到主视图中。
//画上主网格布局

[code="java"]tileFrame = new TileFrame(data.tileArray);
facade.registerMediator( new TileFrameMediator(tileFrame));
main.addChild(tileFrame);



//画上菜单

[code="java"]menu=new Menus();
facade.registerMediator(new MenuMediator(menu));
main.addChild(menu);
menu.y=tileFrame.y+tileFrame.height+20;    
 

接下来就任意发挥了,需要处理业务逻辑的时候,注册command(registerCommand)。
sendNotification来触发它。
Command中常常需要获得Proxy的引用(retrieveProxy)和mediator的引用(retrieveMediator)






如果只是简单业务逻辑,也可以使用mediator直接关注

[code="java"]override public function listNotificationInterests():Array{
     return([])//这个数组里写需要关心的notification
}
override public function handleNotification(notification:INotification):void{
switch( notification.getName() )
{
   Case xxx://消息名
//处理
Break;

}
}


关于游戏逻辑
游戏逻辑很简单,不是本篇主要。就不赘述了
简单概括,
snakeArr 记录蛇身所在各个区块的数组
tileArray 记录所有区块的状态。0,空白1,蛇身2,食物
headNo 蛇头所在区块
蛇头接受到移动命令后根据方向计算下一格所在区块,把tileArray中此格坐标设为蛇身,并加入snakeArr开头,如果新蛇头位置不是食物,把tileArray中蛇尾区块设置为空白,并将该蛇尾从snakeArr中移除,否则不做处理。如果蛇头新位置和蛇身数组中元素有相同,则死亡。


最后丢上代码。
src文件夹,纯代码actionscript项目,新建工程,放入src目录编译即可

  • src.rar (38.1 KB)
  • 下载次数: 19
  • 大小: 18.9 KB
分享到:
评论

相关推荐

    PureMVC中文教程

    标题中的“PureMVC中文教程”表明这是一份关于PureMVC框架的中文学习资料,主要面向想要理解和掌握这一框架的开发者。PureMVC是一个开源的、轻量级的、跨平台的MVC(Model-View-Controller)设计模式框架,它提供了...

    PureMVC教程,PureMVC教程,是学习PureMVC框架的好文章,PureMVC教程,是学习PureMVC框架的好文章,PureMVC教程,是学习PureMVC框架的好文章

    PureMVC是一个轻量级的MVC(Model-View-Controller)框架,旨在最小化不同组件之间的耦合。它的设计理念是提高代码的可维护性和可扩展性,特别适合于大型应用的开发。以下是对PureMVC框架核心概念的详细解释: 1. *...

    初探PureMVC:使用PHP+MySQL+Flex结合PureMVC框架做了个Flex留言本

    标题中的“初探PureMVC:使用PHP+MySQL+Flex结合PureMVC框架做了个Flex留言本”揭示了本文将探讨如何使用PureMVC框架,结合PHP后端和MySQL数据库,构建一个基于Flex的前端留言本应用。PureMVC是一个轻量级、可扩展的...

    flex框架pureMVC的使用:第一步

    建议开发者参考《设计模式:可复用面向对象软件的基础》一书,了解PureMVC所使用的设计模式,以便更深入地理解和使用PureMVC框架。 在实际开发中,要遵循Creative Commons Attribution 3.0协议,这意味着在使用Pure...

    基于PureMVC框架实现的Qt的一个例子

    **PureMVC框架详解** PureMVC是一种轻量级、模型-视图-控制器(MVC)框架,最初是为ActionScript开发的,后来被移植到多种编程语言中,包括C++。它提供了一种组织代码结构的方式,使得开发者可以更高效地构建可维护...

    Lua实现PureMVC

    若是想使用,可以直接查看网上的pureMVC 文档,我并未对任何一个函数改名或者更换参数位置。 注意,这个PureMVC中的 class(ClassName, BaseName) 函数并不提供,因为此框架本意就是为了用于cocos2d-x-lua中。

    PureMVC实现与实践——教程.pdf

    ### PureMVC实现与实践——教程 #### 一、PureMVC概述 PureMVC是一个开源的、跨平台的框架,旨在帮助开发者构建结构清晰、易于扩展和维护的客户端应用程序。该框架最初由Futurescale公司创建并维护,遵循美国...

    PureMVC 中文版

    标题 "PureMVC 中文版" 指的是 PureMVC 框架的一个中文版本,这是一款广泛应用的开源框架,特别设计用于构建富互联网应用程序(RIA),尤其是基于Adobe Flex和ActionScript 3的项目。PureMVC 提供了一种模块化、结构...

    最新PureMVC框架中文文档[官方教程]

    标题"最新PureMVC框架中文文档[官方教程]"表明这是一个关于PureMVC的最新中文参考资料,可能是由官方提供的,旨在帮助中国开发者更好地理解和使用PureMVC。官方教程通常会涵盖框架的基本概念、核心组件、最佳实践...

    PureMVC C#框架

    在"puremvc-csharp-standard-framework-master"这个压缩包中,你将找到PureMVC C#标准版的源代码,包括实现MVC模式的各种接口和类,以及示例应用,这些都是理解和使用PureMVC框架的关键资源。通过深入研究这些文件,...

    PureMVC框架电子书

    《PureMVC框架电子书》是一本专注于ActionScript编程中的重要框架——PureMVC的教程。这个框架在RIA(Rich Internet Application)开发中扮演着关键角色,尤其对于那些追求高性能和高效代码组织的开发者而言,它是一...

    PureMVC框架学习总结

    这个外观类提供了一种访问框架的通用方式,并且对于大部分PureMVC的应用来说,只有这一个类是需要直接使用的。 总体来说,PureMVC通过以上提到的组件和设计,旨在减少程序中类的数量,简化MVC的实现,从而降低项目...

    PureMVC框架实例

    在Flex环境中,PureMVC框架提供了ActionScript 3的实现,使得开发者能够轻松地创建可复用、可维护的Flex应用。通过使用PureMVC,开发者可以将复杂的业务逻辑和UI分离,提高代码的可测试性。 ### 4. 使用...

    PureMVC教程(清晰版).doc

    总结,PureMVC是一个强大的MVC框架,通过定义清晰的角色和通信机制,实现了模型、视图和控制器之间的解耦。对于希望构建可维护和可扩展的Flex或ActionScript应用的开发者来说,它是理想的选择。通过深入理解并实践...

    pureMVC框架源码

    6. **Notification**: 事件通知机制,PureMVC使用观察者模式实现,允许任何对象订阅和发布通知。 7. **Facade**: 是整个应用程序的入口点,它管理所有其他MVC组件,并提供了一个全局访问点。Facade通常负责初始化...

    pureMVC资料包

    这些文档可能详细介绍了如何使用PureMVC框架来组织代码,创建多层结构的应用程序,以及如何实现命令模式、观察者模式和中介者模式等。通过阅读这些文档,开发者可以学习如何在实际项目中有效地应用PureMVC,理解其...

    puremvc 框架源码及教程, 附带一个使用示例

    PureMVC是一个轻量级的、跨平台的、基于观察者模式的多层应用程序架构框架。这个框架的主要目的是为了简化开发过程,提供一种模块化、结构化的开发方式,以提高代码的可重用性和可维护性。在本教程中,我们将深入...

    flash actionscript3教程之pureMVC实现、术语阐述及最佳实践.zip

    《Flash ActionScript3 教程:PureMVC 实现、术语阐述及最佳实践》 在Flash开发领域,ActionScript3(AS3)是用于创建交互式内容和应用程序的主要编程语言。而PureMVC是一个轻量级的框架,它提供了一种结构化的方式...

    可以运行的puremvc的登陆实例.

    标题中的“可以运行的PureMVC的登陆实例”是指一个基于PureMVC框架的登录功能实现,这个实例已经经过验证可以在FlexBuilder3环境下正常运行。PureMVC是一种经典的多层应用架构模式,它为ActionScript、JavaScript、...

Global site tag (gtag.js) - Google Analytics