Cocos2d中几种常用类简介
来源:互联网 发布:非递归后序遍历c语言 编辑:程序博客网 时间:2024/05/17 08:49
TheDirector(导演) CCDirector类,简称Director(导演),是cocos2d游戏引擎的核心。Director是一个单例:它保存着cocos2d的全局配置设定,同时管理着cocos2d的场景。
Director的主要用处如下:
1. 访问和改变场景
2. 访问cocos2d的配置细节
3. 访问视图(OpenGL,UIView,UIWindow) 4. 暂停,恢复和结束游戏
5.在UIKit和OpenGL之间转换坐标
实际上存在四种类型的Director。它们在细节上有所不同。最常用的Director是CCDisplayLinkDirector,它的内部使用了苹果的CADisplayLink类。它是最好的选择,但是只有在iOS3.1以上的版本中才能使用。其次,你可以使用 CCFastDirector。如果你想让CocoaTouch视图和cocos2d一同工作,你必须转到CCThreadedFastDirector,因为只有这个Director才能完全支持。CCThreadedFastDirector不好的一面是:使用它会很耗电。最后的选择是CCTimerDirector,但这是没有办法的选择,因为它是四种Director里面最慢的。
场景图(The SceneGraph) 有时候又被称为“场景层级”。场景图是由所有目前活跃的cocos2d节点所组成的一个层级图。除了场景本身,每一个节点只有一个父节点,但是可以有任意数量的子节点。
当你将节点添加到其它节点中时,你就在构建一个节点场景图。图3-1描绘了一个虚构的游戏场景图。在最上面,你总是放置场景节点(MyScene),通常跟着的是一个层节点(MyLayer)。在cocos2d里,层节点的作用是接收触摸和加速计的输入。
图3-1.一个简化的由多个不同节点组成的cocos2d场景图。场景图中有一个玩家节点和他的武器节点,游戏的得分,和游戏中用于暂停和改变游戏选项的菜单。
在CCLayer下一层的是你游戏的组成要素,它们大多数是精灵(sprite)节点。它们包括用于显示游戏得分的标签节点,用于显示游戏内菜单的菜单和菜单项目节点,玩家用这些菜单来暂停游戏或者回去主菜单。
在图3-1中你会注意到PlayerSprite节点中有个子节点PlayerWeaponSprite。换句说,PlayerWeaponSprite是附加在PlayerSprite上的。如果PlayerSprite移动,旋转或放大缩小,PlayerWeaponSprite将会跟着做同样的事情而不需要额外的代码。这就是场景图的强大之处:你对一个节点施加的影响将会影响到它的所有子节点。但是有时候这也会产生混淆,因为像位置和旋转都是相对于父节点来说的。
CCNode类的层级.所有节点都有一个共同的父类:CCNode。它定义了许多除显示节点外的通用的属性和方法。图3-2展示了继承自CCNode的一些最重要的类。这些类是你最常用到的。其实即使你只用这些类,你也可以创造出很有意思的游戏。
图3-2.CCNode是cocos2d中最重要的类。所有类都继承自CCNode。CCNode定义了通用的属性和 方法。
CCNodeCCNode是所有节点的基类。它是一个抽象类,没有视觉表现。它定义了所有节点都通用的属性和方法。
使用节点CCNode类实现了所有添加,获取和删除子节点的方法。以下是一些处理子节点的方法:
生成一个新的节点:
CCNode* childNode = [CCNode node];
将新节点添加为子节点:
[myNode addChild:childNode z:0 tag:123];获取子节点:
CCNode* retrievedNode = [myNode getChildByTag:123];通过tag删除子节点;cleanup会停止任何运行中的动作:[myNode removeChildByTag:123 cleanup:YES];
通过节点指针删除节点:
[myNode removeChild:retrievedNode];
删除一个节点的所有子节点:
[myNode removeAllChildrenWithCleanup:YES]; 从myNode的父节点删除myNode:
[myNode removeFromParentAndCleanup:YES];
addChild中的z参数决定了节点的绘制顺序。拥有最小z值的节点会首先被绘制;拥有最大z值的节点最后一个被绘制。如果多个节点拥有相同的z值,他们的绘制顺序将由他们的添加顺序来决定。当然,这个规则只适用于像sprites那样有 视觉表现的节点。
tag参数允许你通过getChildByTag方法来获取指定的节点。
注:如果有多个节点拥有相同的tag数值,getChildByTag将把找到的第一个节
点返回。其它节点将不能够再被访问。所以你要确保为你的节点指定独有的tag
动作(Actions)也有tag。不过,节点和动作的tag不会冲突,所以拥有相同
tag数值的动作和节点可以和平共处。
使用动作(Actions)节点可以运行动作。我会在以后多讲一些动作相关的知识。现在你只要知道动作可以让节点移动,旋转和缩放,还可以让节点做一些其它的事情。
以下是一个动作的声明:
CCAction* action = [CCBlink actionWithDuration:10 blinks:20];action.tag = 234;运行这个动作会让节点闪烁:[myNode runAction:action];
如果你想在以后使用此动作,你可以用tag获取:
CCAction* retrievedAction = [myNode getActionByTag:234];你可以用tag停止相关联的动作:[myNode stopActionByTag:234];
或者你也可以用动作指针停止动作:[myNode stopAction:action];
你可以停止所有在此节点上运行的动作:[myNode stopAllActions];
- Cocos2d中几种常用类简介
- cocos2d简介
- cocos2d简介
- 常用类库简介
- Cocos2d-x中的核心类简介
- [cocos2d-x] -- Cocos2d-x简介
- android常用类库简介
- 常用的VCL类简介
- QWT一些常用类简介
- QWT一些常用类简介
- Cocos2d-x CCNode 类中常用函数
- Cocos2d-x入门之常用类介绍
- Cocos2d-x_CCAction(常用动作类)介绍
- cocos2d-iPhone简介
- cocos2d简介及入门
- 第一章 cocos2d简介
- Cocos2d-x简介
- Cocos2D中的ObjectAL简介
- JVM垃圾收集器和内存分配侧策略
- cocos2d-x:02创建动画
- 效果图制作
- 03:把文字和图片加入图层
- Cocos-2d中各个类之间的结构…
- Cocos2d中几种常用类简介
- Appdelegate.h和.cpp的简单解析
- 2013年10月16日
- 如何正确的在Android中存储特定应用文件
- 实现场景的切换
- 【Linux】【学习笔记】Linux目录结构
- Redis2.2.2源码学习——dict中的hashtable扩容和rehash
- 一些关于OpenCV的网址
- 曲面屏手机之战:不再直的手机朝哪弯?