#iphone #objective-c #cocos2d-iphone
#iPhone #objective-c #cocos2d-iphone
Вопрос:
Я получил эту сцену в качестве обзорной сцены, в этой сцене я добавляю себя в качестве слоя и слоя основного меню.
Слой обзора показывает некоторую статистику об игроке, а слой меню отображается вверху. Теперь, когда проигрыватель нажимает на пункт меню в меню, я хочу изменить обзорный слой другим слоем.
Но проблема в том, что я не могу удалить слой overviewscene из класса MainMenu, возможно ли это вообще?
:: Обновить ::
я считаю, что это то, что я пробовал, позвольте мне распечатать некоторый код. Это из моего MainMenuLayer
CCMenuItemFont menu_overview = [CCMenuItemFont itemFromString:@"Overview" target:self.parent selector:@selector(test)];
Родительским элементом будет моя обзорная сцена, поскольку этот слой был добавлен в этот класс, верно?
Из обзорной сцены
-(void)test {
// CCScene *scene =[[CCDirector sharedDirector] runningScene];
// CCLayer *parentz = (CCLayer) self.parent;
//[[scene removeChild: cleanup:YES];
[[OverviewScene node] removeFromParentAndCleanup:YES];
}
Ответ №1:
Правильный способ сделать это — создать родительскую сцену, в которой есть «обзор», новый слой, который вы хотите показать, и слои «MainMenu», добавленные в качестве дочерних слоев. Таким образом, вы можете просто сделать:
[self removeChild:overviewLayer]; // overviewLayer is a reference to overview layer
[self addChild:otherLayer tag:kYourTag z:yourZValue]; // otherLayer is the new layer you want added, mind the z index
Пока вы сохраняете правильно установленный индекс z каждого слоя для поддержания иерархии, это решит вашу проблему.
Комментарии:
1. Эй, code_burgar, я считаю, что это то, что я пробовал, позвольте мне распечатать какой-нибудь код. Это из моего основного меню CCMenuItemFont menu_overview = [CCMenuItemFont itemFromString:@»Обзор» цель: self.parent selector:@selector (test)]; Родительским элементом будет моя обзорная сцена, так как этот слой был добавлен в этот класс, верно? Из обзорной сцены -(void)test { // CCScene *scene =[[CCDirector sharedDirector] runningScene]; // CCLayer * parentz = (CCLayer ) self.parent; //[[сцена removeChild: очистка: ДА]; [[Узел обзорной сцены] removeFromParentAndCleanup: ДА]; }
2. Извините, я новичок здесь, не могу ли я лучше форматировать свой текст в комментариях?
3. не в комментариях, вместо этого вы должны обновить свой вопрос. ТАК что это не форум с обсуждениями.