Как сделать функцию для спрайта или меню в cocos2d?
Я создал два 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 ответ
Простой взлом в вашем howlayer:
-(void)startgame:(id)sender{
gameLayer* parent = (gameLayer*) self.parent;
[parent showthegamecontent];
}
но это может оставить вас с предупреждением.. Но это работает..
Реализация без предупреждения заключается в том, что вы должны хранить ссылку на родителя вместе с init. Который я чувствую, что это ненужно, поскольку вам нужно только сослаться на него один раз