一、重要概念

导演(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. yum 配置

    1.配置yum本地源 # mount /dev/cdrom /mnt/ # vim /etc/yum.repos.d/rhel-source.repo 1 [rhel-source] 2 name=R ...

  2. js中document.documentElement 和document.body 以及其属性 clientWidth等

    在设计页面时可能经常会用到固定层的位置,这就需要获取一些html对象的坐标以更灵活的设置目标层的坐标,这里可能就会用到document .body.scrollTop等属性,但是此属性在xhtml标准 ...

  3. jquery取checkbox选中的值

    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/ ...

  4. linux防止sshd被爆破(安装denyhosts)

    这是一篇收集在日志里的文档,当初查看服务器sshd日志发现很多不明IP尝试登陆,因此想用什么办法阻止这样的事情发生.网上找了下用denyhosts可以解决这样的问题,因而也就将其收集在日志里了.由于时 ...

  5. Windows下配置Tomcat服务器

    Tomcat服务器是Apache开源基金会的一个项目,tomcat不仅能作为静态文件的服务器,也可以作为JSP/Servlet的web容器,而且使用广泛,性能也不错,那么下面来配置一个基本的基于tom ...

  6. Java的switch用法

    下面是switch的用法: var status = msg;        switch (status)    //status是表达式        {            case 0:st ...

  7. 【读书笔记】读《JavaScript设计模式》之桥接模式

    桥接模式(Bridge)将抽象部分与它的实现部分分离,使它们都可以独立地变化. 一.使用场景 使用场景一:事件监控 对于前端而言,最典型的使用场景——事件监控.如—— addEvent(element ...

  8. Linux运维操作

    http://www.it165.net/os/html/201204/1909.html https://i.cnblogs.com/EditPosts.aspx?opt=1 http://www. ...

  9. Android 4.0源码目录结构

    转:http://blog.csdn.net/xiangjai/article/details/9012387 在学习Android的过程中,学习写应用还好,一开始不用管太多代码,直接调用函数就可以了 ...

  10. DJANGO的API跨域实现

    Ajax跨域请求报错:XMLHttpRequest cannot load ''. No 'Access-Control-Allow-Origin' header is present on the ...