Cocos2D-x权威指南:核心类成员CCNode
2016-02-22 09:50
453 查看
节点类(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、每一个节点加入到场景中,当所在场景为激活场景时,这个节点的画图方法会被自己主动调用完毕自我绘制。
通过属性列表,我们了解到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
不论什么须要画在屏幕上的对象都是节点类。
最经常使用的节点类包含场景类(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
相关文章推荐
- cocos2dx学习之路----第四篇(场景跳转)
- 收集Cocos2d提供的字体
- Cocos-x 3.2:从C++过渡到Lua
- cocos2d-x按钮CCControlButton的用法
- Cocos2dx-OpenGL ES2.0教程:编写自己的shader(2)
- iOS6 横屏项目自动旋转的问题解决 cocos2d
- Cocos2dx-OpenGL ES2.0教程:初识MVP(3)
- 使用CocosBuilder2.1结合cocos2d-x2.0.3创建动画场景
- 搭建cocos2d游戏引擎环境HelloWorld!
- Cocos2dx-OpenGL ES2.0教程:你的第一个立方体(5)
- Cocos2dx-OpenGL ES2.0教程:纹理贴图(6)
- Cocos2dx-OpenGL ES 2.0教程:你的第一个三角形(1)
- Cocos2d 有用的各种方法
- Cocos2dx-OpenGL ES2.0教程:使用VBO索引(4)
- cocos2dx之C++调用Lua
- 【android-cocos2d-X2.2 环境配置】在Mac下搭建Cocos2d-X-android开发环境!
- cocos2dx使用CocosBuilder(编辑器)完成基础骨骼动画
- 【android-cocos2d-X iconv.h】在android下使用iconv
- Cocos2dx隐藏iOS7状态栏】通过添加Plist Key隐藏iOS7状态栏
- 【iOS-cocos2d-X 环境配置】在Mac下结合Xcode搭建Cocos2d-X开发环境!