在CCLayer对象的所有子节点中,最上层的节点代表了游戏的各个组成部分。其中大多数都是精灵(sprite)节点,偶尔也有一些标签节点(例如用来显示游戏分数的标签)。菜单节点和菜单项节点用于显示游戏进行时的菜单,玩家可以通过单击该菜单上的按钮暂停游戏或者返回游戏主菜单。
细心的读者可能注意到在图3-1中,PlayerSprite节点下还有一个名为PlayerWeaponSprite的节点。也就是说,PlayerWeaponSprite是从属于PlayerSprite的。如果PlayerSprite发生移动、旋转或缩放,那么在不添加任何代码的情况下,PlayerWeaponSprite也会进行同样的操作。这就是场景图的神奇所在:对某个节点采取的大多数操作会同时影响到它的所有子节点。不过,这个特点有时候也会带来一些比较费解的问题,因为子节点的位置和旋转角度突然间都与父节点产生了关联,一下子可能会让人难以适应。
我写了一个名为NodeHierarchy的Xcode项目,读者可以在随书源码中找到它。这个示例向大家展示了层次体系中各个节点是如何互相影响的。我相信让你看一下真正的效果,会比我用再多的文字和图像去解释要有用多。