2011-09-27 45 views
1

我创建了两个CCLayers,一个是游戏玩家,另一个是howlayer。 gamelayer.m的代码是如何为cocos2d中的精灵或菜单做一个函数?

-(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',那么我应该怎么做?

回答

0
在howlayer

简单的黑客:

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

,但它可能让你一个警告。但它的工作原理..

毫无预兆的实现是,你必须将其存储到一个参考父母与你初始化。我觉得这是不必要的,因为你只需要参考一次。