1

我创建了两个CCLayers,一个是gamelayer,另一个是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

你的howlayer中的简单破解:

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

但它可能会给你一个警告..但它有效..

没有警告的实现是您必须在初始化时存储对父级的引用。我觉得它没有必要,因为你只需要引用一次。

于 2011-10-01T08:46:03.613 回答