用于iPhone游戏开发的Cocos2d中的Layer vs Scene

时间:2009-03-05 09:30:23

标签: iphone cocoa-touch cocos2d-iphone

使用cocos2d进行iPhone游戏开发,我在Layer和Scene之间感到困惑。 例如,我的简单游戏有几个“UI页面”,如主菜单,高分,游戏板等。

我应该为每个“UI页面”使用Layer或Scene,为什么?

3 个答案:

答案 0 :(得分:4)

回顾一下SpritesDemo.m / .h,看起来他们正在使用Layer,然后创建新场景,附加图层然后替换导演上的场景

@interface SpriteDemo : Layer
@interface SpriteManual : SpriteDemo

然后代码执行以下操作:

-(void)nextCallback:(id)sender {
  Scene *s = [Scene node];
  [s add: [nextAction() node]];
  [[Director sharedDirector] replaceScene s];
}

因此,简而言之,您的问题的答案将是“两者”,您使用Layer来表示您的实际“UI页面”,但您将图层附加到新场景并替换导演中的当前场景。 / p>

答案 1 :(得分:2)

很简单:

他们在这些示例中有一个CCLayer和一个+场景方法,它创建一个新场景并在其上附加图层。因为您命名的图层不是“UI页面”。场景是“UI页面”。

在(场景和图层)上,您可以添加更多图层作为子图层。 因此,您可以根据需要堆叠多个图层。这实际上是启用多点触控的好方法 - 为每个对象创建一个图层并在这些图层上启用触摸。底线,他们这样做的方式是正确的,所以你也应该使用图层并使用+场景方法将主图层附加到场景。

希望这会有所帮助。 对不起我的英语不好。不是原生的。

答案 2 :(得分:0)

除非你得到某种触摸输入(因为它是Cocos2D中唯一实现TouchEventsDelegate的类),否则你真的不需要使用Layer。如果你把他们的代码直接放在没有Layer的场景上,那么演示工作正常,所以据我所知他们只是为了演示其他Cocos2D功能(添加子节点,设置位置等)。

相关问题