节点类是cocos2d-x一个主要的类,继承与CCObject 从游戏角度上来说 所有需要在屏幕上渲染的对象都是节点类 最常用的节点类包括CCScene,CClayer,CCSprite,CCMenu 这些在游戏中基本是必不可少的成员
CCNode的特性是最简单但是也是应用最广泛的 因为游戏中所有的对象都是他的子类 所以我们很有必要搞清楚CCNode类的一些属性
其中有位置 缩放尺寸 旋转角度 摄像机朝向 模型网格 锚点 尺寸 是否可见 Z坐标 openGL Z坐标 其实就是一个类中的一些成员变量
有成员变量就一定会有成员函数设置这些属性 CCNode三个最重要的三类成员函数
1,类对象的初始化和内容
2,时间回调函数
3,重载绘制函数
cocos2d-x作为一个强悍的游戏引擎 一个类所包含的类成员函数一定很多 我在这里只是介绍一些常用的函数
addchild(ccnode* child);
addchild(ccnode*child,int zorder);
addchild(ccnode*child,int zorder,int tag);
addchild有三个这样的重载的函数 这个功能最多的用在cclayer这个子类中 因为游戏中把相关的一些对象都放在一个CCLayer中显示 实际开发中程序猿创建一个CCLayer 然后通过静态函数创建一个CCSence添加到这个层中 至于以后要具体要显示的精灵或者粒子系统又或者动作都是以CCNode的子类对象通过addchild函数添加到层中绘制
这里需要说明的是在二维平面世界除了X和Y轴以外 Z轴被用来描述的物体之间的遮挡关系 也就是addchild函数的第二个参数 int zorder 这里需要记住的是一个CCNode的子类其Z轴坐标越小 就会离屏幕越远 这个对象被遮挡的可能性越大
virtual void onenter
virtual void onentertransitiondidfinish
virtual void onexit
virtual void onexittransitiondidstart
这些函数常常用在CCSence这个类中 onenter和onexit这两个函数主要是在进入场景和退出场景的时候做一些初始化工作和清理工作 这两个函数是只要切换场景时就会被自动调用的
但是onentertransitiondidfinish和onexittransitiondidstart是否会被调用的取决于在场景转换的时候时候使用的特效也就是CCTransitionSence函数
runAction(ccaction* action)
这个函数常常被使用在CCSprite类中 自己制作了一个动作 但是这个动作如果你不绑定一个精灵 你是无法看到实际的运动效果 假设一个人是一个精灵my 你制作了一个跑步的动作run 需要时人来执行 则my->runAction(run);这样在游戏中 你就可以看到人走路的效果
接下来要介绍的一个比较智能的函数 就是时间回调函数既和定时器有关的函数
void schedule(SE_SCHEDULE selector)
SE_SCHEDULE这个是一个选择器 类似于c++中的一个类函数指针的机制 用来创建一个函数指针 其实参数就是你需要定时需要执行的函数指针 由于cocos2d-x继承了cocos2d-iphone的代码风格
提供了一些Objective-c中创建选择器的语法宏 用来创建函数指针
schedule_selector()
callfunc_selector()
callfuncN_selector()
callfunc_selector()
到这里需要介绍的CCNode的比较常用的内容和属性 这里需要说明的是 学好cocos2d-x就必须要搞清楚它的框架和继承关系 从根源学习到细末 这里我只是介绍了简单和常用的函数 具体其他的函数可以查阅相关专业书籍
这里我我说一下我看过的几本书
专业知识细的 《cocos2d-x游戏开发技术精解》真不亏是精解 这本书的每一个类的函数和成员都介绍的很仔细
实用价值高《cocos2d-x高级开发教程》也真不亏是高级 这本书是cocos2d-x制作者王哲推荐的一本书
两本书结合看 我相信你一定收获颇多!!