一、重要概念

导演(CCDirector) 在cocos2d-x引擎中,CCDirector类是整个游戏的组织和控制核心,游戏的运行规则,游戏内的CCScene(场景)、布景(CCLayer)、角色(CCSprite)等的运动,均由CCDirector管理。 
摄像机(CCCamera) 游戏中每个节点都需要摄像机,当节点发生缩放,旋转和位置变化时,都需要覆盖摄像机,让这个节点通过摄像机进行重新渲染。

节点(CCNode) 是场景、层、菜单、精灵等所有节点的父类,它是一个抽象类,没有可视化表示形式,定义了所有node共有的属性和方法。 
场景(CCScene) 在游戏里,场景就是关卡。 CCScene是app工作流程上独立块,一个app可能拥有多个scene,但是在任何时候只能有一个是激活状态的。一个CCScene对象由一个或多个CCLayer组成,layer之间是前后相连的。Layer提供了scene的外观和行为。通常的用法是直接用一个或多个layer实例化一个scene。CCScene的子类CCTrasitionScene实现移动transitions,提供两个scene之间的转移效果,由于scene是CCNode的子类,所以scene可以手工或者用aciton来转变坐标。所有层和精灵都是他的(子节点)children。

CCScene的4个基本方法:

runWithScene(运行画面),

replaceScene(替换场景 例如从主菜单进入游戏界面),

pushScene(暂停界面),

popScene(从暂停的界面还原到游戏界面)
层(CCLayer) 从概念上说,层就是场景里的背景。 CCLayer同样是CCNode的子类,通常用addChild方法添加子节点。CCLayer对象定义了可描绘的区域,定义了描绘的规则。CCLayer可以实现半透明的效果,层的事件相应机制 : 最外层最先接受到事件(屏幕触碰),最后是底层,如果在某层处理了该事件,则后面的层不会在接受到事件信号。   
角色或者精灵(CCSprite) sprite对象就是一个可以移动、选择、伸缩、动画的2d图形,CCSprite对象的子成员中可以包含其它的CCSprite对象。当CCSprite 对象转换坐标系的时候,它所包含的CCSprite对象也会转换转换坐标系。sprites 是CCNode的子类, 所以他们也可以使用actions来转换坐标。
动作(CCAction) 角色所具有的动作。

以下就是这些概念的关系图

二、常用的cocos2d-x工具

TiledMap (地图编辑器)ParticleEditor(粒子编辑器)cocosBuilder(可视化编辑)Texture Packer(图片组合工具)

三、cocos2d-x内存管理

cocos2d-x最初移植自cocos2d的objective C版本。因此,在内存管理上,使用了和NSObject类似的引用计数器方法,相关接口放置在CCObject类中。

引用计数器——手动管理内存 CCObject的及其子类的对象在创建时,引用计数自动设置为1。之后每次调用retain,引用计数+1。每次调用release,引用计数-1;若引用计数=0,则直接delete this。 retain是在指针传递和赋值时使用的,他的含义是表示拥有。这经常用在指针赋值上。

自动释放池——自动管理内存 对于使用autorelease的对象,不必管它,每帧结束后会自动释放。 CCNode节点管理 cocos2d-x使用节点组成一棵树,渲染的时候要遍历这棵树。CCNode是所有节点类的父类,他内部使用了一个CCArray对象管理他的所有子节点,当对象被添加为子节点时,实际上是被添加到CCArray对象中,同时会调用这个对象的retain方法。同理,从CCArray中移除时,也会调用release方法。

静态工厂 cocos2d-x中存在大量的静态工厂方法,这些方法中,全都对this指针调用了autorelease函数。 cache机制类

cache内部也使用了ratain和release方法,防止这些资源被释放掉。 使用这些cache,我们可以保存预加载的一些资源,在方便的时候调用它,去绑定给一些对象。注意,这些cache在场景切换时,不会自动删除,需要手动调用purgeXXXX方法,进行清理。

四、游戏存储

CCUserDefault和SQLite
CCUserDefalt存在的的问题
1.没有记录和表的概念
你会发现,如果要设置多存档,必须自己操作,而且代码会变得复杂,容易出错。
对于简单的游戏可以使用CCUserDefalt,但是对于复杂游戏,可以考虑使用SQLite。
2.没有数据类型安全
比如,如果你错写把一个Integer按Bool读取,是没有错误提示的
3.没有存档数据完整性的校验
我们找到之前的存档记录,用CCUserDefault::getXMLFilePath()可以获得存档位置,打开它

[Cocos2d-x For WP8]基础知识的更多相关文章

  1. .NET面试题系列[1] - .NET框架基础知识(1)

    很明显,CLS是CTS的一个子集,而且是最小的子集. - 张子阳 .NET框架基础知识(1) 参考资料: http://www.tracefact.net/CLR-and-Framework/DotN ...

  2. RabbitMQ基础知识

    RabbitMQ基础知识 一.背景 RabbitMQ是一个由erlang开发的AMQP(Advanced Message Queue )的开源实现.AMQP 的出现其实也是应了广大人民群众的需求,虽然 ...

  3. Java基础知识(壹)

    写在前面的话 这篇博客,是很早之前自己的学习Java基础知识的,所记录的内容,仅仅是当时学习的一个总结随笔.现在分享出来,希望能帮助大家,如有不足的,希望大家支出. 后续会继续分享基础知识手记.希望能 ...

  4. selenium自动化基础知识

    什么是自动化测试? 自动化测试分为:功能自动化和性能自动化 功能自动化即使用计算机通过编码的方式来替代手工测试,完成一些重复性比较高的测试,解放测试人员的测试压力.同时,如果系统有不份模块更改后,只要 ...

  5. [SQL] SQL 基础知识梳理(一)- 数据库与 SQL

    SQL 基础知识梳理(一)- 数据库与 SQL [博主]反骨仔 [原文地址]http://www.cnblogs.com/liqingwen/p/5902856.html 目录 What's 数据库 ...

  6. [SQL] SQL 基础知识梳理(二) - 查询基础

    SQL 基础知识梳理(二) - 查询基础 [博主]反骨仔 [原文]http://www.cnblogs.com/liqingwen/p/5904824.html 序 这是<SQL 基础知识梳理( ...

  7. [SQL] SQL 基础知识梳理(三) - 聚合和排序

    SQL 基础知识梳理(三) - 聚合和排序 [博主]反骨仔 [原文]http://www.cnblogs.com/liqingwen/p/5926689.html 序 这是<SQL 基础知识梳理 ...

  8. [SQL] SQL 基础知识梳理(四) - 数据更新

    SQL 基础知识梳理(四) - 数据更新 [博主]反骨仔 [原文]http://www.cnblogs.com/liqingwen/p/5929786.html 序 这是<SQL 基础知识梳理( ...

  9. [SQL] SQL 基础知识梳理(五) - 复杂查询

    SQL 基础知识梳理(五) - 复杂查询 [博主]反骨仔 [原文]http://www.cnblogs.com/liqingwen/p/5939796.html 序 这是<SQL 基础知识梳理( ...

随机推荐

  1. DCMTK开源库的学习笔记4:利用ini配置文件对dcm影像进行归档

    转:http://blog.csdn.net/zssureqh/article/details/8846337 背景介绍: 医学影像PACS工作站的服务端需要对大量的dcm文件进行归档,写入数据库处理 ...

  2. 通过关闭UseDNS和GSSAPIAuthentication选项加速SSH登录

    引自:http://www.cnblogs.com/wjoyxt/p/3790537.html More:http://blogread.cn/it/article/4719 通常情况下我们在连接 O ...

  3. 毫秒数转换为指定格式日期的js代码

    var format = function(time, format){ var t = new Date(time); var tf = function(i){return (i < 10 ...

  4. 完善DriveInfoEx源代码 获取计算机硬盘序列号

    概述: 获取计算机硬盘序列号用途很多,在网上找到了一个C++的源代码DriveInfoEx(点这里查看).非常好的一个DLL,.NET项目可以直接引用,而且源代码里有示例. 但这个DLL在Win7非管 ...

  5. JUC回顾之-ScheduledThreadPoolExecutor底层实现原理和应用

    项目中经常使用定时器,比如每隔一段时间清理下线过期的F码,或者应用timer定期查询MQ在数据库的配置,根据不同version实现配置的实时更新等等.但是timer是存在一些缺陷的,因为Timer在执 ...

  6. undefined reference to 'typeinfo for android::Thread'

    原因:工程使用了系统库libstagefright.so,而该库是Android系统用no-rtti方式编译出来的,因此我们的工程也必须要用no-rtti方式编译. 解决方法:在Application ...

  7. Android常用查询网站

    一.老罗的Android之旅爱生活,爱Android http://blog.csdn.net/luoshengyang 二.Android中文API http://www.android-doc.c ...

  8. 同网段下,windows自带远程桌面连接

    1.服务器关闭防火墙 2.右键点击’我的电脑‘进入’属性‘点击左侧菜单栏中的’远程设置‘: 把远程桌面选项设置成’允许运行任意版本远程桌面的计算机连接‘. 3.客户端点击“开始”在附件菜单下面找到“远 ...

  9. PowerDesigner12逆向生成oracle数据表时,错误解决

    1.用PowerDesigner12建模,在Database—>Generate Database (或者用Ctrl+G快捷键)来生产sql语句,却提示“Generation aborted d ...

  10. hdu 4831

    写了一个小时题目看错了,艹 自己百度吧