节点类(CCNode)是Cocos2D-x中的主要类,继承自CCObject。继承关系如图3-2所看到的。







不论什么须要画在屏幕上的对象都是节点类。

最经常使用的节点类包含场景类(CCScene)、布景层类(CCLayer)、人物精灵类(CCSprite)、菜单类(CCMenu)。



CCNode类包含的主要功能例如以下:

  • 每一个节点都能够含有子节点。这点本书也会在后面给出演示样例。
  • 节点含有周期性回调的方法(Schedule、Unschedule等)。(关于周期性回调方法,本章将会有一节单独解说。假设如今不了解。能够跳过这段内容。

  • 能够含有动作(CCAction)。

CCNode能够为它自己和它的子节点加入额外的功能。不管是CCNode执行的动作(CCAction),还是设置的旋转角度和位置等属性,父节点的设置都能够传递到子节点上,这点在一些游戏的开发中能够使我们的管理更轻松。比方某些纵版射击游戏,玩家控制的主角飞机须要携带子机。子机的移动位置要随着主机一起移动,我们就能够把子机设置为主机的子节点,这样,在设置位置的时候,仅仅须要设置主机的位置就能够了。大大降低了程序猿须要处理的内容。提高了代码的清晰度和可读性。



因为CCNode类不自带贴图。事实上在屏幕上看不到不论什么节点类的效果。所以一般使用CCNode类的场合有两个:第一个情况就是,须要一个父节点来管理一批子节点。这时候能够设置一个“无形”的子节点来管理子节点;还有一种情况就是有时须要自定义一个在屏幕上显示的对象。这时候让新定义的这个类继承自CCNode。一个类继承自CCNode类,说明它有例如以下特点:

  • 重写初始化的方法和周期性回调方法。
  • 在时间线上控制回调。

  • 重写渲染的绘制方法。

CCNode类不含有贴图,它能够进行位置的平移、大小的伸缩变化、旋转变化。

在网格特效(会在后面的章节介绍)使用的时候,网格特效能够获得屏幕中绘制的内容,而且对获得的屏幕内容进行渲染。这一点在游戏中须要一些全屏特效的时候能够使用。

CCNode是Cocos2d-x画图的基本单位。CCScene、CCLayer、CCMenu、CCSprite都继承自CCNode,CCNode节点都具有下面特征:

1、每一个节点都能够通过addChild方法包括子节点、通过removeChild删除节点。

2、每一个节点的子节点都能够设置标记,通过getChildByTag来获取节点。

3、每一个节点都能够运行计划任务,在Cocos2d-x的系统循环中处理这些任务。

4、每一个节点都能够通过runAction运行瞬时动作和延时动作。

5、每一个节点加入到场景中,当所在场景为激活场景时,这个节点的画图方法会被自己主动调用完毕自我绘制。

    class CC_DLL CCNode : public CCObject
{
protected://属性列表
float m_fRotationX; ///x轴旋转角度
float m_fRotationY; ///y轴旋转角度
float m_fScaleX; ///x轴缩放比例
float m_fScaleY; ///y轴缩放比例
float m_fVertexZ; ///z轴设置
CCPoint m_obPosition; ///节点坐标
float m_fSkewX; ///x轴扭曲角度
float m_fSkewY; ///y轴扭曲角度
CCPoint m_obAnchorPointInPoints; ///锚点坐标
CCPoint m_obAnchorPoint; ///缺省锚点坐标
CCSize m_obContentSize; ///节点大小
CCAffineTransform m_sAdditionalTransform; ///变换信息
CCAffineTransform m_sTransform; ///变换信息
CCAffineTransform m_sInverse; ///变换信息
CCCamera *m_pCamera; ///摄像头对象
CCGridBase *m_pGrid; ///网格对象
int m_nZOrder; ///Z轴设置,影响图层顺序
CCArray *m_pChildren; ///全部子节点
CCNode *m_pParent; ///所在父节点
int m_nTag; ///当前节点标识
void *m_pUserData; ///用户调用指针
CCObject *m_pUserObject; ///用户调用对象
CCGLProgram *m_pShaderProgram; ///OpenGL shader
ccGLServerState m_eGLServerState; ///OpenGL servier side state
unsigned int m_uOrderOfArrival; ///
CCScheduler *m_pScheduler; ///调度类完毕计划任务调度
CCActionManager *m_pActionManager; ///动作管理器
bool m_bRunning; ///标识当前节点是否在执行
bool m_bTransformDirty; ///< transform dirty flag
bool m_bInverseDirty; ///< transform dirty flag
bool m_bAdditionalTransformDirty; ///
bool m_bVisible; ///标识当前节点是否可见
bool m_bIgnoreAnchorPointForPosition; ///在CCLayer和CCScene中使用
bool m_bReorderChildDirty; ///记录子节点的 dirty flag
int m_nScriptHandler; ///在Javascript 和 Lua 编程使用
int m_nUpdateScriptHandler; ///在Javascript 和 Lua 编程使用
ccScriptType m_eScriptType; ///标识Javascript或Lua 脚本
CCComponentContainer *m_pComponentContainer; ///组件字典
.......
}

通过属性列表,我们了解到CCNode具有下面属性:

-坐标 position  

   -缩放 scale (x, y)  

   -旋转rotation (in degrees, clockwise)  

   -摄像机CCCamera (an interface to gluLookAt )  

   -网格 CCGridBase (to do mesh transformations)  

   - 锚点anchor point  

   - 尺寸size  

   - 可见性visible  

   - 层次设定z-order  

   - openGL z轴位置  

这些属性的缺省值设定例如以下:

    - 旋转rotation: 0  

    - 坐标position: (x=0,y=0)  

    - 缩放scale: (x=1,y=1)  

    - 尺寸contentSize: (x=0,y=0)  

    - 锚点anchorPoint: (x=0,y=0)  

     - 一个新的CCNode对象没有不论什么纹理  

在CCNode对象创建完毕的时候。能够实现下面操作:

1、变换坐标 translated (position)

2、变化角度rotated (rotation)

3、变换尺寸 scaled (scale)

4、变换显示状态 (camera)



http://book.2cto.com/201304/19781.html

Cocos2D-x权威指南:核心类成员CCNode的更多相关文章

  1. Yii框架入门教程(博客教程、权威指南、类手册)

    http://www.yiichina.com/ http://www.yiiframework.com/doc/blog/1.1/zh_cn/start.overviewhttp://www.yii ...

  2. 《JavaScript权威指南》读书笔记——JavaScript核心

    前言 这本由David Flanagan著作,并由淘宝前端团队译的<JavaScript权威指南>,也就是我们俗称的“犀牛书”,算是JS界公认的“圣经”了.本书较厚(有1004页),读起来 ...

  3. 《JS权威指南学习总结--1.1语言核心》

    1.1语言核心 --本节主要介绍<js权威指南>基础部分各章讲解内容和一些简单的示例 本小节内容: 一.第二章讲解js注释.分号和Unicode,第三章主要讲解js变量和赋值 简单示例: ...

  4. JS 语言核心(JavaScript权威指南第六版)(阅读笔记)

    前言: 对于程序员,学习是无止境的,知识淘换非常快,能够快速稳固掌握一门新技术,是一个程序员应该具备的素质.这里将分享本人一点点不成熟的心得. 了解一门语言,了解它的概念非常重要,但是一些优秀的设计思 ...

  5. JavaScript权威指南--类和模块

    知识要点 每个javascript对象都是一个属性集合,相互之间没有任何联系.在javascript中也可以定义对象的类,让每个对象都共享某些属性,这种“共享”的特性是非常有用的.类的成员或实例都包含 ...

  6. Cocos2D-x权威指南: CCNode类方法:

    5.1.4 画图节点CCNode和图层CCLayer CCNode中提供的方法,在public块中的方法主要有下面几个部分: 1.针对节点显示的属性信息读写 2.针对节点变换的属性信息读写 3.针对子 ...

  7. 《JS权威指南学习总结--9.3 JS中JAVA式的类继承》

    内容要点: 一.JS中的类 1.JAVA或其他类似强类型 面向对象语言的 类成员的模样 实例字段:它们是基于实例的属性或变量,用以保存独立对象的状态. 实例方法: 它们是类的所有实例所共享的方法,由每 ...

  8. Netty权威指南

    Netty权威指南(异步非阻塞通信领域的经典之作,国内首本深入剖析Netty的著作,全面系统讲解原理.实战和源码,带你完美进阶Netty工程师.) 李林锋 著   ISBN 978-7-121-233 ...

  9. Struts2权威指南笔记

    Struts2权威指南笔记 1.mvc特点包括: ① 多个视图可以对应一个模型 ② 模型返回的数据与显示逻辑分离 ③ 应用层被分隔为三层,降低了各层之间的耦合,提供了应用的可扩展性 ④ 控制层的概念也 ...

随机推荐

  1. IO-04. 混合类型数据格式化输入

    /** *A4-IO-04. 混合类型数据格式化输入 *C语言实现 *测试已通过 */ #include "stdio.h" int main() { float m1,m2; i ...

  2. Linux07--Shell程序设计03 通配符与正则表达式

    通配符 通配符可用于代替字符. 通常地,星号“*”匹配0个或以上的字符,问号“?”匹配1个字符. 使用情况: 1.文件和目录 在CP/M.DOS.Microsoft Windows和类Unix操作系统 ...

  3. Logstash 默认不处理一天前的文件

    The default behavior of the file input plugin is to ignore files whose last modification is greater ...

  4. docker 基于现有镜像修改后保存,上传私有仓库

    docker:/root# docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES f3cb864be528 192.168.3 ...

  5. 人生第一场组队赛---2014.8 zju monthly

    暑期集训中段就组了队,不过一直没机会打比赛 昨天kitkat突然发现了zju要搞月赛,我想了一下题目对于我这种渣实在是有点难,于是想到干脆打一次组队赛吧,跟队友商量了一下也同意了 12点---17点  ...

  6. LFM 隐语义模型

    隐语义模型: 物品       表示为长度为k的向量q(每个分量都表示  物品具有某个特征的程度) 用户兴趣 表示为长度为k的向量p(每个分量都表示  用户对某个特征的喜好程度) 用户u对物品i的兴趣 ...

  7. MySQL- InnoDB锁机制

    InnoDB与MyISAM的最大不同有两点:一是支持事务(TRANSACTION):二是采用了行级锁.行级锁与表级锁本来就有许多不同之处,另外,事务的引入也带来了一些新问题.下面我们先介绍一点背景知识 ...

  8. instance variables may not be placed in categories

    Avoid Properties in Categories Objective-C分类中是不允许增加成员变量的(Instance variables may not be placed in cat ...

  9. 【Apache ZooKeeper】为ZNode设置watcher

    众所周知,ZooKeeper中的ZNode是树形结构,现在我需要给/app1结点设置watcher,监听/app1下增减.删除和修改的结点,并将相应的事件使用log4j记录到日志文件中.ZNode的变 ...

  10. 软交所--微软将对IE浏览器进行关键性安全更新

    微软于当地时间周四宣布下周二,即本月的"补丁星期二"推送九个安全升级. 当中最重要的就是解决IE浏览器远程运行代码(RCE)漏洞,这个漏洞影响从IE6至IE11全版本号,全部Win ...