《Cocos2D权威指南》——3.1 Cocos2D节点基础知识

3.1 Cocos2D节点基础知识

在Cocos2D中,CCNode、CCScene和CCLayer这些类是没有视觉呈现的,但它们之间存在一个层级关系。
3.1.1 节点层级图
节点层级图是由所有目前活跃的Cocos2D节点组成的一个层级图,又叫场景继承关系图。除了场景本身,每一个节点只有一个父节点,但是可以有任意数量的子节点。
将节点添加到其他节点中时,就在构建节点场景图。图3-1描绘了一个虚拟的游戏场景图,在顶层是一个场景(CCScene)节点,接下来是层(CCLayer)节点。

CCLayer下一层的子节点构成了游戏的主要元素,它们大多数是精灵(CCSprite)节点,还包括用于显示游戏得分的标签节点,游戏中的菜单节点和菜单项目节点等。
节点层级图的作用在于,对某个节点施加的影响将会影响到它的所有子节点。
3.1.2 什么是锚点
如果觉得锚点这个概念很抽象,可以想象用图钉在墙上订上一张卡片,卡片就相当于节点,墙壁就相当于设备的屏幕,而图钉就是锚点。
在Cocos2D中,锚点的默认位置是在纹理图像的几何中心位置。比如将某个精灵对象的位置设置为(50,50)时,其几何中心位置在默认情况下也应该是(50,50)。
如果将锚点设置在精灵的左下角,并将精灵的位置设置为(50,50)。那么此时应该是精灵的左下角处于(50,50)的位置,而非其几何中心处在该位置。锚点和节点对象的几何形状关系如图3-2所示。

锚点实际上是到节点对象纹理图的偏移。锚点值的范围从(0,0)到(1,1)之间。默认情况下,锚点位于纹理图像的几何中心,即(0.5,0.5)。
锚点很重要的一个作用就是辅助游戏元素进行界面布局定位。如代码清单3-1中所示第2章用到的代码片断所示。
代码清单3-1 第2章游戏中用到的代码片断

CCLabelTTF *lifeIndicator = [CCLabelTTF labelWithString:@"生命值:" fontName:@"Arial" fontSize:20];
      lifeIndicator.anchorPoint = ccp(0.0,0.5);
      lifeIndicator.position = ccp(20,winSize.height - 20);
      [self addChild:lifeIndicator z:10];
      _lifeLabel = [CCLabelTTF labelWithString:@"3" fontName:@"Arial" fontSize:20];
      _lifeLabel.position = ccpAdd(lifeIndicator.position, ccp(lifeIndicator.contentSize.width+10,0));
      [self addChild:_lifeLabel z:10];

注意 通常设置CCNode的position属性是相对于锚点的,而CCLabel的锚点默认设置在节点的中点。所以,当设置CCLabel节点位置时,节点的中心位置也是所设置的坐标位置。

时间: 2024-10-01 06:12:32

《Cocos2D权威指南》——3.1 Cocos2D节点基础知识的相关文章

《Cocos2D权威指南》——导读

前言 为什么要写这本书 2011年10月5日,秋风萧瑟,阴雨绵绵,在这颗蔚蓝色的美丽星球上,一代传奇伟人乔布斯在亲友的陪伴下安然离去,宛若流星划过天际,空留那辆银色的奔驰SL55AMG在落叶纷飞中孤独守候着曾经的主人.这个世界从此失去了一位引领科技创新的时代领袖. 从1976年在父母的车库中创业开始,乔布斯参与.开创并改变了几个行业-PC.电脑动画.数字音乐.移动互联网.他创办了苹果公司,中途又因某些原因被苹果驱逐.然而在苹果挣扎于濒死的边缘时,他又挺身而出将苹果救活,并把它推到无人可以企及的高

《Cocos2D权威指南》——3.2 CCNode节点类

3.2 CCNode节点类 CCNode是Cocos2D中最重要的类,同时也是所有节点的基类.它是一个抽象类,没有视觉表现,定义了所有节点都通用的属性和方法.在Cocos2D中,所有要绘制到屏幕的对象,或是自身包含要绘制到屏幕中的对象,都属于CCNode类.最重要的几个CCNode类分别是CCScene.CCLayer.CCSprite.CCMenu,这也是我们本章要重点学习的内容.CCNode的主要作用:包含其他的CCNode节点(addChild.getChildByTag.removeCh

《Cocos2D权威指南》——1.2 下载与安装

1.2 下载与安装 本节介绍Cocos2D的下载与安装.如果想使用Cocos2D开发iPhone应用或游戏,首先要下载Cocos2D的模板,然后安装该模板,最后创建Cocos2D**的帮助文档.下面分别来介绍这几个步骤. 1.2.1 下载Cocos2D** 首先登录Cocos2D的官方网站:http://www.cocos2d-iphone.org,切换到Download选项,可以看到如图1-2所示的网站页面. 由图1-2可以看到,Cocos2D的最新稳定版本有v1.0.1和v2.0版.考虑到C

《Cocos2D权威指南》——第1章 1.0 开始前的准备工作

第一部分 基础篇 本部分内容 开始前的准备工作 你的第一款iPhone游戏-垂直射击游戏 Cocos2D核心类 Cocos2D中的动作.特效与动画 Cocos2D中的文本渲染系统Cocos2D中的事件处理机制Cocos2D世界的声音 在Cocos2D中使用瓷砖地图 物理引擎-更真实的Cocos2D世界 第1章 1.0 开始前的准备工作 本章我们将介绍什么是Cocos2D以及有关Cocos2D的一些重要基础知识,包括如何下载与安装Cocos2D-iPhone的模板.如何安装Cocos2D-iPho

《Cocos2D权威指南》——3.3 CCScene场景类

3.3 CCScene场景类 CCScene是CCNode的子类,和CCNode一样,也是一个抽象类.事实上,CCScene和CCNode几乎完全相同,唯一差异在于CCScene的锚点位置默认在屏幕中心.如果打开模板中CCScene.h文件,大家会发现其中只说明CCScene继承自CCNode,并没有任何其他内容.图3-4是典型的游戏场景跳转示意图.当前版本的Cocos2D中,CCScene类基本上没有附加任何逻辑机制和特殊功能.通常建议将CCScene作为其他所有节点的父节点,看作CCLaye

《Cocos2D权威指南》——1.6 本章小结

1.6 本章小结 本章首先介绍了Cocos2D的基础知识.包括它的一些特性.下载并安装Cocos2D模板的步骤:然后,创建了一个简单的HelloCocos2D项目:接着详细解释了HelloCocos2D项目的实现代码:最后,介绍了如何在设备上对项目进行测试.第2章我们会以一个完整的垂直射击小游戏为背景,详细介绍使用Cocos2D开发游戏的基本方法与步骤.

《CCNP SWITCH 300-115学习指南》——第1章 基础知识回顾

第1章 基础知识回顾CCNP SWITCH 300-115学习指南在正式进入CCNP SWITCH这门针对园区网交换技术的课程之前,我们首先快速地回顾一遍CCNA中的相关知识点并简要地介绍其中部分技术,以便于本书内容的理解.由于这里提到的所有技术都是独立存在的,如生成树或虚拟LAN(VLAN),因此本章将这些基础知识汇总到一起进行复习,并且在后续章节中将不再重复类似的基础讲解. 如果读者十分了解交换术语,并对交换技术有着基本的认识,建议跳过此章,直接从第2章开始阅读. 本章涵盖如下CCNA基础交

《Cocos2D权威指南》——1.4 深入学习HelloCocos2D项目

1.4 深入学习HelloCocos2D项目 在完成了第一个HelloCocos2D项目后,如果读者不仅想看到飞机在屏幕上飞行,还想知道这一切是怎样实现的,我们不妨来一起探究其中的每一行代码.1.4.1 初识场景和节点 要想理解HelloCocos2D这个项目,首先要了解场景(CCScene).层(CCLayer)和节点(CCNode)的概念. Cocos2D游戏是由不同的场景构成的,由导演(CCDirector)负责运行和切换各个场景.在Cocos2D中,CCDirector在任何一个时间点上

《Cocos2D权威指南》——3.4 CCLayer层类

3.4 CCLayer层类 一个CCLayer是屏幕上可绘制的区域,可以是半透明的,这样就可以看到CCScene下面的其他层.在游戏编程的过程中,开发者大部分时间都需要跟层打交道.如图3-5所示,一个游戏场景包含3个层,背景层.动画层和菜单层. CCLayer直接继承自CCNode,作为精灵节点和其他节点的容器,它同时可以接收触摸输入和加速计输入的信息,前提是上述接收功能已经启用.3.4.1 CCLayer类的作用 CCLayer类的作用主要有三个. (1)其他子节点的容器和组织者 例如对一个层