《Cocos2D权威指南》——3.1 Cocos2D节点基础知识-阿里云开发者社区

开发者社区> 华章出版社> 正文

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

简介: 本节书摘来自华章计算机《Cocos2D权威指南》一书中的第3章,第3.1节,作者:王寒,屈光辉,周雪彬著, 更多章节内容可以访问云栖社区“华章计算机”公众号查看。

3.1 Cocos2D节点基础知识

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

image

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

image

锚点实际上是到节点对象纹理图的偏移。锚点值的范围从(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节点位置时,节点的中心位置也是所设置的坐标位置。

版权声明:如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件至:developerteam@list.alibaba-inc.com 进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容。

分享:

华章出版社

官方博客
官网链接