Cocoa2d 笔记
来源:互联网 发布:淘宝店招收藏店铺代码 编辑:程序博客网 时间:2024/05/20 11:25
The Director(导演)CCDirector类,简称Director(导演),是cocos2d游戏引擎的核心。如果你回
Director是一个单例:它保存着cocos2d的全局配置设定,同时管理着cocos2d的场景。
Director的主要用处如下:
1. 访问和改变场景
2. 访问cocos2d的配置细节
3. 访问视图(OpenGL,UIView,UIWindow)4. 暂停,恢复和结束游戏
5. 在UIKit和OpenGL之间转换坐标
实际上存在四种类型的Director。它们在细节上有所不同。最常用的Director是CCDisplayLinkDirector,它的内部使用了苹果的CADisplayLink类。它是最好的选择,但是只有在iOS 3.1以上的版本中才能使用。其次,你可以使用CCFastDirector。如果你想让Cocoa Touch视图和cocos2d一同工作,你必须转到CCThreadedFastDirector,因为只有这个Director才能完全支持。CCThreadedFastDirector不好的一面是:使用它会很耗电。最后的选择是CCTimerDirector,但这是没有办法的选择,因为它是四种Director里面最慢的。
场景图(The Scene Graph)有时候又被称为“场景层级”。场景图是由所有目前活跃的cocos2d节点所组成的一个层级图。除了场景本身,每一个节点只有一个父节点,但是可以有任意数量的子节点。
当你将节点添加到其它节点中时,你就在构建一个节点场景图。图3-1描绘了一个虚构的游戏场景图。在最上面,你总是放置场景节点(MyScene),通常跟着的是一个层节点(MyLayer)。在cocos2d里,层节点的作用是接收触摸和加速计的输入。
在CCLayer下一层的是你游戏的组成要素,它们大多数是精灵(sprite)节点。它们包括用于显示游戏得分的标签节点,用于显示游戏内菜单的菜单和菜单项目节点,玩家用这些菜单来暂停游戏或者回去主菜单。
在图中你会注意到PlayerSprite节点中有个子节点PlayerWeaponSprite。换句话说,PlayerWeaponSprite是附加在PlayerSprite上的。如果PlayerSprite移动,旋转或放大缩小,PlayerWeaponSprite将会跟着做同样的事情而不需要额外的代码。这就是场景图的强大之处:你对一个节点施加的影响将会影响到它的所有子节点。但是有时候这也会产生混淆,因为像位置和旋转都是相对于父节点来说的。
CCNode类的层级.所有节点都有一个共同的父类:CCNode。它定义了许多除显示节点外的通用的属性和方法。
CCNode是所有节点的基类。它是一个抽象类,没有视觉表现。它定义了所有节点都通用的属性和方法。
图3-2展示了继承自CCNode的一些最重要的类。这些类是你最常用到的。其实即使你只用这些类,你也可以创造出很有意思的游戏。
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];
- Cocoa2d 笔记
- Cocoa2d-X学习笔记第一篇:下个决心表个态
- Cocoa2d-X学习笔记第三篇:基础数据结构
- 安装COCOA2D
- cocoa2D开发
- Cocoa2d-X学习笔记第二篇:通过include文件看看源码构架
- cocoa2D 基础知识教程
- cocoa2d学习资料
- cocoa2d tiled 地图编辑器
- cocoa2d (游戏开发)
- cocoa2D-x:helloWorld(1)
- cocoa2D:基本概念(2)
- cocoa2D:CCAction(3)
- IOS学习 cocoa2d安装
- Cocoa2D 实现半透明暂停菜单
- Cocoa2d-x 音乐与音效
- cocoa2d ios 开发环境搭建
- Cocoa2d-x 3.0 Release 版本 配置Mac
- basename 和 dirname
- CV_IMAGE_ELEM
- 黑马程序员--.NET笔记--字符串
- C#Winform限制Textbox只能输入数字
- cocos2d-x下硬件音量按键控制游戏音量的实现
- Cocoa2d 笔记
- 转的--关于作者对产品的一句话
- C++读写文件代码自动生成器(python3完成)
- 黑马程序员_关于对象和指向该对象的变量的有关问题
- 如何做好基层管理者(一)
- 在MFC中查找HWND
- Page.ClientScript.RegisterStartupScript和ScriptManager.RegisterStartupScript的区别
- PHP的SOAP工具包--nusoap
- 文本编辑和fckeditor切换使用时注意的问题