1

2 つの CCLayer を作成しました。1 つは gamelayer で、もう 1 つは howlayer です。gamelayer.m のコードは

-(id)init{
if (self = [super init]) {

    CCSprite *gamebg = [CCSprite spriteWithFile:@"bg.png"];
    gamebg.anchorPoint = CGPointZero;
    [self addChild:gamebg z:0 tag:1];

    HowLayer *howLayer = [HowLayer node];
    [self addChild:howLayer];
   [self schedule:@selector(showthegamecontent:) interval:0.4];
 }
 return self;
}

howlayerのコードは

-(id)init{
if (self=[super init]) {
    CCSprite *howbg = [CCSprite spriteWithFile:@"translucentbg.png"];
    howbg.anchorPoint = CGPointZero;
    [self addChild:howbg z:5 tag:1];

    CCMenuItem *howmenu = [CCMenuItemImage itemFromNormalImage:@"how.png"
                                                   selectedImage:@"how.png"
                                                          target:self 
                                                        selector:@selector(startgame:)];
    CCMenu *ccMenuhowmenu = [CCMenu menuWithItems:howmenu, nil];
    ccMenuhowmenu.position=ccp(517,384);
    [self addChild:ccMenuhowmenu z:5 tag:2];
}
return self;
}

-(void)startgame:(id)sender{
 [self removeAllChildrenWithCleanup:YES];
}

私はこのような機能をしたい:

howlayer のメニューをクリックすると、Howlayer が削除され (実行済み)、ゲームが開始され、セレクター「showthegamecontent」が呼び出されますが、どうすればよいですか?

4

1 に答える 1

0

ハウレイヤーでの簡単なハック:

 -(void)startgame:(id)sender{ 
 gameLayer* parent = (gameLayer*) self.parent; 
 [parent showthegamecontent];
  }

しかし、それはあなたに警告を残すかもしれません..しかし、それは動作します..

警告なしの実装では、init で親への参照を保存する必要があります。一度参照するだけでよいので、不要だと思います。

于 2011-10-01T08:46:03.613 に答える