这个+(CCScene *)场景是什么?

时间:2012-07-20 17:32:49

标签: cocos2d-iphone

我看到很多示例CCLayer子类的代码如下所示:

+(CCScene *) scene{
    CCScene *scene = [CCScene node];
    HelloWorldLayer *layer = [HelloWorldLayer node];
    [scene addChild: layer];

    return scene;
}

谁叫这种方法,它的用途是什么?它需要在那里吗?为了将来的目的是否方便?

2 个答案:

答案 0 :(得分:1)

是的,这是必要的。在ApplicationDelegate的applicationDidFinishLaunching方法中调用此方法。例如,在HellowWorld模板中,它在AppDelegate的这一行中被调用: [[director_ pushScene: [HelloWorldLayer scene]]

ccDirector只能运行CCScene,并且一次只能运行一个CCScene。这就是为什么CCLayer首先创建一个CCScene然后将其自身添加为它的原因。 作为替代方案,您可以通过覆盖CCScene方法,将CCLayers子类化为init并将其添加到其中:

-(id) init {
   if (self = [super init]){
     CCLayer *aLayer = [CCLayer node];
     [self addChild: aLayer];
     ....
  }
 return self;
}

并将此行[[director_ pushScene: [HelloWorldLayer scene]]替换为AppDelegate的[[director_ pushScene: [myScene node]]方法中的applicationDidFinishLaunching

答案 1 :(得分:0)

我所知道的是它不需要,我也想知道同样的事情。我认为这是因为他们想鼓励使用一些场景。你的场景应该由图层组成,你应该在场景之间切换。