Как мне удалить слой со сцены, с другого слоя. (Cocos2d)

#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. не в комментариях, вместо этого вы должны обновить свой вопрос. ТАК что это не форум с обсуждениями.