1

私が目にする多くの CCLayer サブクラスの例には、次のようなコードがあります。

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

    return scene;
}

誰がそのメソッドを呼び出し、どのような目的に役立つのでしょうか? それはそこにある必要がありますか?将来の目的のために便利ですか?

4

2 に答える 2

1

はい、必要です。このメソッドはapplicationDidFinishLaunching、ApplicationDelegate のメソッドで呼び出されます。たとえば、HelloWorld テンプレートでは、AppDelegate の次の行で呼び出されます。 [[director_ pushScene: [HelloWorldLayer scene]]

ccDirector は CCScene のみを実行でき、一度に 1 つの CCScene のみを実行できます。そのため、CCLayer は最初に CCScene を作成し、次に自分自身を子として追加します。別の方法として、次のようにメソッドをオーバーライドすることで、サブクラス化して and などをCCScene追加できます。CCLayersinit

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

AppDelegateのメソッドで、この行[[director_ pushScene: [HelloWorldLayer scene]]をこれに置き換えます。[[director_ pushScene: [myScene node]]applicationDidFinishLaunching

于 2012-07-20T17:59:55.963 に答える
0

私が知っているのは、それが必要ないということだけです。私は同じことを考えていました。シーンの使用を少し促進したいからだと思います。シーンはレイヤーで構成され、シーンを切り替える必要があります。

于 2012-07-20T17:36:01.477 に答える