0

私は 1 CCScene( PlayScene) と 2 CCLayer(PlayLayerおよびHUDLayer) をその子として持っています。私は、クラスPlayLayer.mで宣言した別のメソッドを呼び出しています。PlaySceneこのメソッドを呼び出す方法は、次のコード ( PlayLayer.m) です。

[(PlayScene *) self.parent gameStory:@"story2.png"];

メソッドは次のように宣言されます ( 内PlayScene.h):

-(void)gameStory:(NSString *)imgName;

私を困惑させたのは、コードの下部でこれと同じ方法を実行したところ、それが機能し、メソッドが呼び出されることです。しかし、PlayLayer.m の先頭のずっと前に、このメソッドをもう一度呼び出そうとすると、self.parent = (null).

誰か私がいくつかの光を当てるのを手伝ってもらえますか?

PS そのメソッドは最終的に の別のメソッドを呼び出しHUDLayer.mます。

4

2 に答える 2

0

デリゲートを使用して親メソッドを呼び出すこともできます: http://mobiledevelopertips.com/objective-c/the-basics-of-protocols-and-delegates.html

http://obj-c.pl/objective-c-podstawy-1-3-klasy-i-delegaty/

于 2012-09-17T14:33:40.213 に答える
0

子ノードを初期化すると、その親プロパティは初期化中に nil になります。

解決策: 親へのアクセスが必要なコードを onEnter に延期します。これは、addChild の実行時に呼び出されます。

-(id) init
{
    self = [super init];
    if (self)
    {
        // does not work, parent is nil:
        [(PlayScene *) self.parent gameStory:@"story2.png"];
    }
    return self;
}

-(void) onEnter
{
    [super onEnter];

    // works, parent is set:
    [(PlayScene *) self.parent gameStory:@"story2.png"];
}
于 2012-09-18T08:40:01.020 に答える