我看到很多示例CCLayer子类的代码如下所示:
+(CCScene *) scene{
CCScene *scene = [CCScene node];
HelloWorldLayer *layer = [HelloWorldLayer node];
[scene addChild: layer];
return scene;
}
谁叫这种方法,它的用途是什么?它需要在那里吗?为了将来的目的是否方便?
答案 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)
我所知道的是它不需要,我也想知道同样的事情。我认为这是因为他们想鼓励使用一些场景。你的场景应该由图层组成,你应该在场景之间切换。