Cocos2dx开发之设计模式

cocos2dx的几种常见设计模式

一 单例模式

Cocos2dx中的单例有:CCDirector,CCTextureCache,CCSpriteFrameCache,CCScriptEngineManager等等,那为什么存在这些单例呢?

如导演类负责控制场景对象等等,由此存在一个场景控制对象即可;类似那种操作缓存数据文件之类的,或者配置文件的类等,在程序运行过程也是只需一个便可。

二 观察者模式

指被观察者含有一个数组,里边存放了所有观察者的引用,在被观察者的状态发生改变的时候,通过调用观察者的函数来通知观察者,实现了信息的传递。

三 简单工厂模式

CCSpriteFrameCache类通过定制的plist文件来实例化一系列相关的CCSpriteFrame实例,然后只需要提供精灵帧的名字就可以得到相应的CCSpriteFrame实例了。从这个意义上来说,CCSpriteFrameCache类也可以说是一个工厂类,专门负责生产CCSpriteFrame实例。同时,如果精灵帧名字相同的话,那么获取的精灵帧实例也是相同的。

四 管理者模式

管理者(Manager)专门负责管理其它类的实例的类,如CCTextureCache。

管理者类(cache类)可以简化一些可以重用的资源(比如字体、纹理、精灵帧等)的创建和管理工作,可以提高游戏性能。

但凡那些对象,在运行时创建的时间开销特别大时,而又要经常重复使用时,都可以采取此模式来提高运行时性能

MVC — 按照我的理解就拿组队系统界面为例,CPortTeamUI就是Model,定义了业务逻辑相关的行为方法,如initUI,UpdateView等;load加载的面板Panel便是View,由一组UI元素组成; ClsTeamData是Controller,负责逻辑数据管理中心。 打开界面时View要显示最新数据,则请求Controller问服务端要,当数据返回时Controller会寻找对应的Model,调用其定义的方法updateView从而执行更新行为,实际上Model会通知相关的View去实时更新。 Controller作为Model和View两者之间的联系桥梁。

原文地址:https://www.cnblogs.com/pyqLoner/p/9211516.html

时间: 2024-11-08 22:47:32

Cocos2dx开发之设计模式的相关文章

iOS开发与设计模式 - MVC

iOS开发与设计模式 - MVC 最近在学习GoF的设计模式这本书,粗略的浏览了一遍,真是好书.好书就应该好好读,因此很有必要从实际的言语.项目理解设计模式. 我是做iOS开发的,自然就从这方面入手(脑). MVC iOS开发最基本的一个模式就是MVC, M指model,V指view,C指controller,有很多文章对它们是什么,它们的关系,它们如何交互进行了详细的说明,本文就不再展开说明了,仅放一张图供大家参考(来自斯坦福大学ios课程)  ViewController 是什么? 在iOS

IOS开发常用设计模式

IOS开发常用设计模式 说起设计模式,感觉自己把握不了笔头,所以单拿出iOS开发中的几种常用设计模式谈一下. 单例模式(Singleton) 概念:整个应用或系统只能有该类的一个实例 在iOS开发我们经常碰到只需要某类一个实例的情况,最常见的莫过于对硬件参数的访问类,比如UIAccelerometer.这个类可以帮助我们获得硬件在各个方向轴上的加速度,但是我们仅仅需要它的一个实例就够了,再多,只会浪费内存. 所以苹果提供了一个UIAccelerometer的实例化方法+sharedAcceler

Mac环境下cocos2d-x开发环境完全指南

本教程来自CSDN博客:http://blog.csdn.net/zhaokaiqiang1992 转载请说明! 本教程主要指导新手在Mac环境下cocos2d-x开发环境搭建. 1.cocos2d-x下载 下载网站:http://cn.cocos2d-x.org/download/ 下载3.x版本后,解压即可 2.必备软件安装及环境配置 进行cocos2d-x开发,必须安装的软件有 Java SDK(Mac自带) Ant(安装可以参考这个教程:http://www.cnblogs.com/il

Cocos2d-X开发中国象棋《六》游戏开始功能的实现

我在前面的博客Cocos2d-X开发中国象棋<四>设计游戏场景中介绍了在游戏场景上场景了一个开始按钮,并没有实现开始的功能 游戏开始功能的实现效果: 实现思路: 1.显示随机位置的棋子 2.将棋子移动到棋盘上的指定位置 具体实现方式: 首先在SceneGame类中定义一个initStone()函数用于初始化棋子 initStone()函数实现了3个功能 1.创建棋子 2.将棋子设置到随机位置 3.隐藏棋子 initStone()中的代码: //初始化32个棋子 void SceneGame::

火云开发课堂 - 《使用Cocos2d-x 开发3D游戏》系列 第二十一节:地表漫游与寻路

<使用Cocos2d-x 开发3D游戏>系列在线课程 第二十一节:地表漫游与寻路 视频地址:http://edu.csdn.net/course/detail/1330/20822?auto_start=1 交流论坛:http://www.firestonegames.com/bbs/forum.php 工程下载地址:请成为正式学员获取工程 课程截图: ?? 版权声明:本文为博主原创文章,未经博主允许不得转载.

Cocos2DX开发:记录遇到的一些问题和解决方法

今天看了一下以前学习cocos2dx时记录的一些笔记,主要是在实际中遇到的一些问题,整理了一下,就成为了这篇文章,便于自己以后查找,也为一些新手提供点经验. 这篇文章会一直更新,将自己之后开发中遇到的问题也更新到文章中. 1.使用cocos2d-x-2.2.0新建项目的过程 解决:2.0以后的版本没有了install-templates-msvc.bat配置模板脚本,不能直接在VS2010中直接创建cocos2d-x项目,只能通过 终端窗口运行Python脚本来新建项目. 方案: 步骤1:将终端

【原】cocos2d-x开发笔记:获取Sprite上某一个点的透明度,制作不规则按钮

本篇文章主要讲一下怎么做一个不规则的按钮,比如如下图的八卦,点击绿色和点击红色部分,需要执行不同的事件 一般情况下,如果要检测某一个精灵是否被点中,做法如下 bool HelloWorld::ccTouchBegan(cocos2d::CCTouch* pTouch, cocos2d::CCEvent* pEvent) { CCSize sprSize = pSpr->getContentSize(); CCPoint point = pSpr->convertTouchToNodeSpace

[01] cocos2d-x开发环境搭建

cocos2d-x 是跨平台的游戏开发引擎,支持的平台有 ios , android , windows phone , web , tizen,windows等. 先来搭建开发环境,一般我们开发游戏的编码平台有以下几种: 1. windows 2.linux 3.mac os x 而使用cocos2d-x开发游戏的目标平台一般主要是 android和ios ,以及 windows. 当开发平台是windows时,游戏的目标平台只能是android,windows,windowsphone ,w

火云开发课堂 - 《使用Cocos2d-x 开发3D游戏》系列 第十一节:骨骼动画模型播放控制

?? <使用Cocos2d-x 开发3D游戏>系列在线课程 第十一节:骨骼动画模型播放控制 视频地址:http://edu.csdn.net/course/attend/1330/20811 交流论坛:http://www.firestonegames.com/bbs/forum.php 工程下载地址:明天放出 课程截图: 实例工程演示: ?? ?? 版权声明:本文为博主原创文章,未经博主允许不得转载.