cocos2d-x学习之CCScene
2013-04-22 23:11
351 查看
介绍
CCScene类对应cocos2d-x引擎里的场景,CCScene中存放的是需要渲染的布景、人物角色、和菜单,它可以作为一个整体,一起渲染,一起销毁,一起被场景切换使用。
类结构图
CCScene 继承自 CCNode。 CCNode继承自CCObject和SelectorProtocol。
作用
在cocos2d-x引擎中CCScene承担的是一个容器的功能。游戏开发时把多个需要渲染的对象放在CCScene里面统一管理,包括创建、销毁和场景切换等。
主要函数
CCScene函数:bool init () //初始化函数 static CCScene * node (void) //生CCScene
继承自CCNode的函数:
virtual int getZOrder (void) //获取节点的顺序 virtual const CCPoint & getPosition (void) //获取节点的位置 virtual void setPosition (const CCPoint &var) //设置节点的位置 virtual CCArray * getChildren (void) //获取其所有子节点 virtual CCCamera * getCamera (void)//获取其对应的摄像机 virtual bool getIsVisible (void) //判断节点是否可见 virtual void setIsVisible (bool var) //设置节点可见性 virtual const CCPoint & getAnchorPoint (void) //获取节点的锚点的位置 virtual void setAnchorPoint (const CCPoint &var) //设置节点的锚点位置 virtual bool getIsRunning (void) //判断节点是否在运行 virtual CCNode * getParent (void)//获取父及节点指针 virtual void setParent (CCNode *var) //设置节点的父节点 virtual int getTag (void) //获取节点的tag virtual void setTag (int var) //设置节点的tag char * description (void) //返回节点的描述 virtual void onEnter () //进入节点时的回调函数 virtual void onEnterTransitionDidFinish ()//进入节点后的回调函数 virtual void onExit ()//离开节点时的回调函数 virtual void addChild (CCNode *child)//增加节点 virtual void addChild (CCNode *child, int zOrder) //通过顺序添加节点 virtual void addChild (CCNode *child, int zOrder, int tag)//通过顺序和tag添加节点 void removeFromParentAndCleanup (bool cleanup)//删除父节点中的当前节点并清除动作及回调函数 virtual void removeChild (CCNode *child, bool cleanup) //删除节点 void removeChildByTag (int tag, bool cleanup)//通过tag删除节点 virtual void removeAllChildrenWithCleanup (bool cleanup)//删除节点并清除动作及回调函数 CCNode * getChildByTag (int tag)//通过tag获取节点 virtual void reorderChild (CCNode *child, int zOrder)//根据order重新排序 virtual void cleanup (void)//清除动作 virtual void draw (void)//绘制自己 virtual void visit (void)//访问节点 CCAction * runAction (CCAction *action) //运行动作 void stopAllActions (void)//停止所有的动作 void stopAction (CCAction *action)//停止动作 void stopActionByTag (int tag) //通过tag停止动作 CCAction * getActionByTag (int tag)//通过tag获取动作的指针 unsigned int numberOfRunningActions (void)//正在运行的动作的总数 void schedule (SEL_SCHEDULE selector)//定义一个定时器 void schedule (SEL_SCHEDULE selector, ccTime interval)//定义一个定时器 void unschedule (SEL_SCHEDULE selector)//取消一个定时器 void unscheduleAllSelectors (void)//取消所有定时器 void resumeSchedulerAndActions (void)//恢复定时器和动作 void pauseSchedulerAndActions (void)//暂停定时器和动作 static CCNode * node (void)//生成一个节点
CCNode
CCNode是cocos2d-x的渲染链,写游戏基本上就是和他打交道了,cocos2d-x同时只能渲染一个CCScene,因此CCScene是渲染的根节点。在构建游戏时,一般是一个Scene中添加一个或者多个CCLayer,一个Layer中又添加多个CCSprite或者CCMenu,CCSprite中还可以添加CCParticleSystem等等。这样就构建了一个渲染树,cocos2d-x历遍这个树来将图像显示在屏幕上。coco2d-x的渲染实际上是调用visit()函数来完成的:即visit()这个函数调用它包含的Child的zOrder<0的visit()函数,之后调用draw()函数,再调用Child的zOrder>=0的visit()函数,它实际上是一个深度优先的算法。他的Child是按照zOrder排序的,以保证渲染的正确性。draw()的作用是绘制自己。在CCSprite这些确实需要绘制的类中,draw()调用openGL的函数来完成绘制功能——把一个纹理映射到一个矩形上。
如果要自定义绘制一些图像,可以重写draw()函数,不过不要忘记调用父类的draw()函数。
可以进行网状关系的管理,其实CCScene,CCLayer也是一个CCNode.它提供节点增删,包含,提供节点缩放,每个节点有一个照相机,提供动画支持,也就是说每一个从CCNode派生的类都可以执行动画操作;
版权信息:原创文章:咸蛋博客
本文标题:cocos2d-x学习之CCScene
本文链接:http://xiandanboke.com.cn/?p=765转载请注明转自咸蛋博客
相关文章推荐
- Cocos2d-x学习笔记之CCScene、CCLayer、CCSprite的默认坐标和默认锚点实验
- cocos2d-x学习笔记04:CCScene场景切换
- cocos2d-X学习之主要类介绍:场景(CCScene)
- Cocos2d-x学习笔记之CCScene、CCLayer、CCSprite的默认坐标和默认锚点实验
- IOS cocos2d学习笔记-<七>CCTransitionScene场景切换动画
- 我的Cocos2d-x学习笔记(二十四)CCScrollView
- 【Cocos2d-x for WP8 学习整理】(3)CCScrollView 实现捕鱼达人一样的场景选择界面
- Cocos2d-x学习笔记三之飞机游戏详解之GameScene类的讲解
- cocos2d学习之CCColor
- Cocos2d-x学习(十):cocos2d-x 2.0版本中CCScrollView的用法
- Cocos2d-x学习笔记(十四)CCAutoreleasePool具体解释
- cocos2d学习之CCDirector
- cocos2d-x学习笔记3:CCTextFieldTTF的使用和再封装
- 子类、变换-cocos2d-x 学习点滴(5) Scene,Director, Layer 和 Sprite-by小雨
- 我的Cocos2d-x学习笔记(十七)CCProgressTo
- cocos2d-x学习笔记-CCMenu和CCMenuItem详解
- 【cocos2d-x 2.x 学习与应用总结】11: 理解CCGLProgram
- Cocos2d-x学习笔记(七)CCAction原理分析
- Cocos2d-X 对static CCScene *scene();的封装方法
- Cocos2d-js 学习:cc.LabelTTF 简单API记录