添加,所以我創建了一個暫停菜單,cocos2d - 孩子已添加。它不能再次
- (void) reset {
CCSprite * backg = [CCSprite spriteWithFile:@"noise.png"];
backg.position = ccp(480/2, 320/2);
[pauseMenu addChild:backg];
CCLabelBMFont *restartLabel = [CCLabelBMFont labelWithString:@"Restart" fntFile:@"good_dog_plain_32.fnt"];
restartLabel.color = ccc3(68,136,168);
CCMenuItemLabel *restartItem = [CCMenuItemLabel itemWithLabel:restartLabel target:self selector:@selector(restartMenu)];
restartItem.position = ccp(0, 40);
CCLabelBMFont *mainMenuLabel = [CCLabelBMFont labelWithString:@"Main Menu" fntFile:@"good_dog_plain_32.fnt"];
mainMenuLabel.color = ccc3(68,136,168);
CCMenuItemLabel *mainMenuItem = [CCMenuItemLabel itemWithLabel:mainMenuLabel target:self selector:@selector(exitMenu)];
mainMenuItem.position = ccp(0, -40);
CCLabelBMFont *resumeLabel = [CCLabelBMFont labelWithString:@"Resume" fntFile:@"good_dog_plain_32.fnt"];
resumeLabel.color = ccc3(68,136,168);
CCMenuItemLabel *resumeItem = [CCMenuItemLabel itemWithLabel:resumeLabel target:self selector:@selector(resumeMenu)];
CCMenu *menu = [CCMenu menuWithItems:resumeItem,restartItem,mainMenuItem, nil];
menu.position = ccp(480/2,320/2);
[pauseMenu addChild:menu z:1];
[self.hero sleep];
[self addChild:pauseMenu];
}
這個菜單是我gamescene創建的,因此只要用戶按下暫停鍵這表明了,現在我已經另一個場景稱爲mainMenu
您可以從暫停菜單去mainMenu
和我用這個代碼:
- (void) exitMenu {
[[CCDirector sharedDirector] replaceScene:[mainMenu scene]];
}
所以一旦你按下這個按鈕,它的工作原理,並返回到主菜單,但後來當我按下從「播放」按鈕mainMenu
並轉到遊戲並按下暫停按鈕我收到此錯誤:child already added. It can't be added again
...如果我從暫停菜單重新開始遊戲場景,這種情況不會發生,只有在遊戲加載後從主菜單轉到遊戲時纔會發生。
我會給予好評此評論,因爲我要做到這一點,這是非常有幫助的,但問題是,在'exitMenu'功能我沒有刪除pauseMenu孩子,所以當遊戲再次,在跑孩子已經在那裏了。你的解決方案會解決它,所以只是刪除孩子。 – ahoura
我很高興它讓你朝着正確的方向前進 –