как сделать функцию для спрайта или меню в cocos2d? - PullRequest
1 голос
/ 27 сентября 2011

Я создал два 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', так что мне делать?

1 Ответ

0 голосов
/ 01 октября 2011

Простой взлом в вашем howlayer:

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

, но он может оставить вас с предупреждением .. Но это работает ..

Реализация без предупреждения заключается в том, что вы должны сохранитьссылка на родителя с вами init.Который я считаю ненужным, так как вам нужно ссылаться на него только один раз.

...