1

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

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

    return scene;
}

谁调用了该方法,它的用途是什么?它需要在那里吗?对将来的目的是否方便?

4

2 回答 2

1

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

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

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

并在AppDelegate的方法中将这一行替换[[director_ pushScene: [HelloWorldLayer scene]]为 this 。[[director_ pushScene: [myScene node]]applicationDidFinishLaunching

于 2012-07-20T17:59:55.963 回答
0

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

于 2012-07-20T17:36:01.477 回答