Редактировать: Исходя из вашего примера кода, я предлагаю следующее, которое может работать не совсем так, как написано из-за отсутствия у меня оборудования для тестирования: P.
Сначала добавьте метод в класс настроек под названием +(id) nodeFromSource: (bool) bPauseMenu.
+(id)nodeFromSource:(bool)bPauseMenu
{
if((self = [self node])
{
m_bPauseMenu = bPauseMenu;
}
return self;
}
Добавить bool m_bPauseMenu;в определении класса.
В функции, которую вы назначаете для своей кнопки возврата в Настройках, реализуйте следующий код:
//for example...
-(void)backButtonPressed:(id)sender
{
if(m_bPauseMenu)
{
[[CCDirector sharedDirector] replaceScene:[CCTransitionFlipAngular transitionWithDuration:1.2f scene:[pauseLayer node]]];
}
else
{
//trigger a replaceScene back to the other menu here
//(MyOtherLayer is the classname of your non-pause-menu layer that you came from...
[[CCDirector sharedDirector] replaceScene:[CCTransitionFlipAngular transitionWithDuration:1.2f scene:[MyOtherLayer node]]];
}
}
Измените вызов в настройках pauseLayer - (void): (id) отправьте:
[[CCDirector sharedDirector] replaceScene:[CCTransitionFlipAngular transitionWithDuration:1.2f scene:[Settings nodeFromSource:true]]];
И где бы вы ни находились, чтобы показать слой «Настройки», сделайте так:
[[CCDirector sharedDirector] replaceScene:[CCTransitionFlipAngular transitionWithDuration:1.2f scene:[Settings nodeFromSource:false]]];
Причина, по которой я назвал это nodeFromSource, заключается в том, что однажды выможет заменить bool каким-либо эталоном и позволить вашим слоям узнать кое-что о слоях, с которых они пришли.
Я надеюсь, что это работает как есть.Я прошел через это несколько раз и не вижу никаких очевидных ошибок ...