from://http://www.cnblogs.com/ArmyShen/p/3239664.html

1、CCDirector(导演类)

控制游戏流程的主要类,主要负责设定游戏窗口、切换场景、暂停或恢复场景等工作。

由于CCDirector的全局性,所以它是一个单例,整个程序中只会存在一个它的实例:

//获得CCDirector实例
CCDirector *pDirector = CCDirector::sharedDirector();
/*--------CCDirector场景管理方法--------*/
//程序启动时运行第一个场景时调用
void runWithScene(CCScene *pScene); //直接替换当前运行的场景为pScene,这是最常用的一个场景切换方法
void replaceScene(CCScene *pScene); //将当前场景暂停,压入到带待执行场景栈中,设pScene为当前运行的场景
void pushScene(CCScene *pScene); //释放当前场景,并从待执行场景栈中弹出栈顶场景,将其设为运行场景。如果栈为空,则退出程序。与pushScene结合使用
void popScene(void); //暂停当前场景中的所有内容
void pause(void); //恢复暂停的场景,与pause结合使用
void resume(void); //结束场景,退出游戏
void end(void);

2、CCScene(场景)

没有特别的功能。通常是作为层(CCLayer)的容器,它的另一个作用就是流程控制,可以利用CCDirector::replaceScene(CCScene *pScene)自由的切换场景。

可以使用CCLayer替代CCScene,但是这样就不能使用CCTransitionScene实现场景间的切换效果了。

3、CCLayer(层)

CCLayer和CCScene有类似的作用,就是作为游戏元素的容器。不同的是,CCScene中通常包含一个一个CCLayer,而CCLayer中通常包含CCSprite、CCMenu、CCLabel等用户可见的节点元素。CCLayer另一个重要的作用就是接收用户的输入事件,包括触摸、重力加速、键盘输入等。

4、CCSprite(精灵)

CCSprite是游戏最重要的组成元素,游戏中的一草一木都是通过CCSprite体现出来的。创建CCSprite有很多种方式,使用起来也非常的灵活,具体参考源代码。

5、CCNode(节点)

CCNode是所有游戏元素的基类(CCScene、CCLayer、CCSprite等),因此这些子类节点共同拥有CCNode所提供的特性。也就是说继承自CCNode的可绘制节点都拥有比如位置、缩放、旋转、是否可见等属性,节点的最基本功能包括:

1)包含其他CCNode对象 -- 可以把任何一个CCNode节点添加到另一个节点上去

2)接收各种事件与回调 -- 如定时器事件

3)执行动作 -- runAction

6、定时器

定时器:以一定的时间间隔,不断的检测游戏事件,从而使游戏发生动态变化的工具

Cocos2d-x提供了两种方式的定时机制:

1)update定时器 -- 该方法每帧都会被触发调用一次。CCNode默认没有开启update方法,可以调用scheduleUpdate()启用定时器,unscheduleUpdate()停止定时器,最主要的还需要重载一下CCNode的update(float)方法,需要定时更新的内容都在update函数中实现。

//开启定时器
this->scheduleUpdate();
//每帧调用update函数,更新里面的内容
void update(float delta)
{
i++;
}

2)schedule定时器 -- 该方法可以让用户设置触发调用的时间间隔。要注意的是,这个时间间隔必须大于2帧的间隔。

//每隔1s调用一次updateGame函数
this->schedule(schedule_selector(HelloWorld::updateGame), 1.0f);
//updateGame函数
void updateGame(float dt)
{
i++;
}

7、onEnter() / onExit()方法

onEnter() -- 节点所在的场景即将显示的时候被调用

onExit() -- 节点所在的场景即将退出时被调用

通常一个继承自CCNode或CCLayer的类中都会有一个init()方法用于初始化这个节点上的数据,init这个方法也是对基类相同函数的重载,需要注意的是,init()这个方法会在onEnter()方法之前被调用。它们主要的区别就是init()方法只会在类初始化的时候被调用一次,而onEnter()方法会随着所在节点的隐藏显示可能会被调用多次。

cocos2d-x基本元素的更多相关文章

  1. cocos2D(三)---- 第一cocos2d的程序代码分析

    在第一讲中已经新建了第一个cocos2d程序,执行效果例如以下: 在这讲中我们来分析下里面的代码,了解cocos2d的工作原理,看看屏幕上的这个"Hello World"是怎样显示 ...

  2. 三、第一个cocos2d程序的代码分析

    http://blog.csdn.net/q199109106q/article/details/8591706 在第一讲中已经新建了第一个cocos2d程序,运行效果如下: 在这讲中我们来分析下里面 ...

  3. 小尝试一下 cocos2d

    好奇 cocos2d 到底是怎样一个框架,正好有个项目需要一个游戏框架,所以稍微了解了一下.小结一下了解到的情况. 基本概念 首先呢,因为 cocos2d 是基于 pyglet 做的,你完全可以直接用 ...

  4. 采用cocos2d-x lua 制作数字滚动效果样例

    require "Cocos2d"require "Cocos2dConstants"local testscene = class("testsce ...

  5. Cocos2d 利用继承Draw方法制作可显示三维数据(宠物三维等)的三角形显示面板

    很久没有写博客了,这段时间比较忙,又是搬家又是做自己的项目,还有太多琐碎的事情缠身,好不容易抽出时间把最近自己做的一些简单例子记录一下. 在我的项目中,我需要一个显示面板来显示游戏中的一个三维数据,例 ...

  6. HTML基本元素(一)

    HTML基本元素(一) 1.换行符 <br /> Ps:br 是换行(Break)的缩写,文本会在这个标签的地方换行. 实例: 第一行<br />第二行 2.段落 <p& ...

  7. iPhone开发与cocos2d 经验谈

    转CSDN jilongliang : 首先,对于一个完全没有mac开发经验,甚至从没摸过苹果系统的开发人员来说,首先就是要熟悉apple的那一套开发框架(含开发环境IDE.开发框架uikit,还有开 ...

  8. cocos2d学习记录

    视频 - http://www.manew.com/forum-105-3.html一个论坛帖 - http://www.zhihu.com/question/21114802官网 - http:// ...

  9. Android下Cocos2d创建HelloWorld工程

    最近在搭建Cocos2d的环境,结果各种问题,两人弄了一天才能搞好一个环境-! -_-!! 避免大家也可能会遇到我这种情况,所以写一个随笔,让大家也了解下如何搭建吧- 1.环境安装准备 下载 tadp ...

  10. 学生信息管理系统(cocos2d引擎)——数据结构课程设计

    老师手把手教了两天半,看了一下模式,加了几个功能就大功告成了!!! 给我的感想就是全都是指针! 添加图片精灵: CCSprite*  spBG = CCSprite::create("&qu ...

随机推荐

  1. 在Jenkins中配置执行远程shell命令(转)

    用过Jenkins的都知道,在Build配置那里有1个Add buld step, 有这样两个选项: 1. Execute Windows batch command 2. Execute shell ...

  2. Android 6.0 API

    Android 6.0 (M) 为用户和应用开发者提供了新功能.本文旨在介绍其中最值得关注的 API. 着手开发 要着手开发 Android 6.0 应用,您必须先获得 Android SDK,然后使 ...

  3. java 组合接口时的名字冲突

    重载方法仅通过返回类型是区分不开的,在打算组合的不同接口中,尽量使用不同的方法名,否则可能导致混乱 //: interfaces/InterfaceCollision.java package obj ...

  4. SqlServer查看表、存储过程、耗时查询、当前进程、开销较大的语句

    --查看数据库中表的语句 SELECT s2.dbid , DB_NAME(s2.dbid) AS [数据库名] , --s1.sql_handle , ( SELECT TOP 1 SUBSTRIN ...

  5. 如何区分prometheus中Histogram和Summary类型的metrics?

    要理解它们的区别,关键还是告业务应用. 但如何在学习时,如何区分呢? 有以下几个维度: histogram有bucket,summary在quatile. summary分位数是客户端计算上报,his ...

  6. [转] 实时监听input输入的变化(兼容主流浏览器)

    遇到如此需求,首先想到的是change事件,但用过change的都知道只有在input失去焦点时才会触发,并不能满足实时监测的需求,比如监测用户输入字符数. 在经过查阅一番资料后,欣慰的发现firef ...

  7. Android uses-permission 权限大全

    Android uses-permission 权限大全 当编写某些程序时,你需要调用手机的某些功能 这时候你一定要记得启用相关的uses-permission, 很多网上贴出来的代码都不包含 Man ...

  8. shell学习(一)

    一.免密交互 --stdin 1.从标准输入读取字符串 如:passwd   --stdin   heruguo246 [root@localhost mnt]#    ---输入了修改heruigu ...

  9. 关于伪类“:pseudo-class”和伪元素“::pseudo-element”的常见应用

    伪类用于指定要选择的元素的特殊状态,向其添加特殊的效果,比如: input { width: 515px; height: 50px; padding: 10px 20px; border: 1px ...

  10. 001.Chrony时间服务器

    一 Chrony概览 1.1 Chrony简介 Chrony是一个开源的自由软件,是网络世界协议(NTP)的另一种实现,它能保持系统时钟与时钟服务器(NTP)同步,让时间保持精确. 它由两个程序组成: ...