iphone游戏开发之cocos2d(四)cocos2d中的常用类及使用方法粗览,导演,场景,层,精灵;

        昨天粗略的整理了一下CCNode的一些文档,方便以后查阅,今天把cocos2d中的类层体系给介绍整理一下,算是逼着自己温故知新吧,如果不写博,我估计还是静不下心来,开始吧

CCDirector

        CCDirector是整个cocos2d引擎的核心,游戏之中的一些常用操作控制,比如场景的转换,游戏的暂停继续控制,世界坐标和GL坐标之间的切换,对于精灵(游戏元素)的控制等,还有一些游戏数据的保存调用,屏幕尺寸的获取等;

        CCDirector是游戏项目的总导演,会经常调用进行一些控制,所以该CCDirector利用了单件设计模式,也就是项目里取到的director都是同一个;

        CCDirector的生成方法为[CCDirector sharedDirector],包含的方法如下

(CGSize) winSize
(CGSize) winSizeInPixels
(void) reshapeProjection:
(CGPoint) convertToGL:
(CGPoint) convertToUI:
(float) getZEye
  XXX: missing description. 
(void) runWithScene:
(void) pushScene:
(void) popScene
(void) replaceScene:
(void) end
(void) pause
(void) resume
(void) stopAnimation
(void) startAnimation
(void) drawScene
(void) purgeCachedData
(void) setGLDefaultValues
(void) setAlphaBlending:
(void) setDepthTest:
(void) createStatsLabel
由上可见,CCDirector最主要的还是对场景(Scene)的控制

Scene

        Scene场景也是cocos2d中的重要元素,我们可以理解为场景是一个舞台,游戏中最重要的就是构建一个一个的舞台,游戏中关卡,版块的切换就是一个一个场景的切换;CCDirector控制对场景的切换,pushScene,popScene等director中的方法就是控制场景的切换的~有点类似于UINavigationController中的切换方法;

        director切换场景的常用方法有

1、(void)runWithScene:(CCScene *)scene

第一次进入场景时调用,如果已有正在运行的场景则不能调用该方法;会调用pushScene-->startAnimation;

2、(void)pushScene:(CCScene *)scene 

挂起当前正在运行的场景插入到堆中,执行新场景,只有存在正在运行的场景时才调用该方法;

3、(void)popScene

停止当前正在运行的场景,执行场景队列中之前的场景,只有存在正在运行的场景时才能调用该方法;

4、(void)replaceScene:(CCScene *)scene

用参数场景替代当前正在运行的场景,正在运行的场景被终止;

5、(void)end

终止当前执行效果,释放所有场景,但不会改变场景构成关系;

6、(void)pause

暂停当前运行的场景,场景图被绘制但定时方法等暂停,每秒传输帧率降为4,CPU占用率下降;

7、(void)resume;

恢复暂停的场景,schedule方法继续;

        Scene是CCNode的子类,因为场景的特殊性,所以决定了场景是由一个一个的其他元素构建的,精灵和层,菜单(特殊的层)等,通过addChild等方法,这也是继承自CCNode的一些特性;

层Layer

层是依附于场景之上的图层,可以响应用户的操作事件,一个场景常常是由多个层组成的~cocos2d官网上的一张场景分解图可以很形象地说明;

        左上的场景由三个layer组成,背景层,精灵动画层,菜单层,三个层有顺序地叠加形成了一个scene,该scene由director,在适当的时候用push或pop等方式来控制游戏场景切换;与用户交互的事件也在层之上进行定义,比如菜单层上定义的点击事件,另外层还可以响应加速计;

        层是节点CCNode的子类,所以可以被手动控制翻转或用动作(Action)来进行控制,并可以在其上面添加其他层或者精灵等(addChild);

        层的创建由继承自CCNode的node方法来进行,通常在场景的init方法中进行,如下

        CCLayer *backgroundLayer = [GameBackground node];

        [[CCScene node] addChild:backgroundLayer];

        层的叠加顺序取决于z轴(z-order)的值;

        层的本质是对节点进行分组(iPhone&iPad cocos2d 游戏开发实战);

精灵Scripte

         精灵CCSprite继承自CCNode,可以认为是一个可以被手动控制,执行动作的2D图片,我们在游戏中看到的人物形象等基本上全是精灵;精灵可以在其身上添加子精灵,并且运动时,附着的其他精灵会跟着一齐运动;精灵常常与美术相关;


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值