Как определить, на какой сцене последний раз был пользователь?
Я использую cocos2d и хочу узнать, как я могу определить, на какой сцене последний раз был пользователь, прежде чем он / она нажали кнопку, чтобы перейти к моей сцене настроек из моей сцены pauseLayer. Мне нужно знать, потому что есть 2+ способа получить доступ к сцене настроек, поэтому мне понадобится специальная кнопка "Назад", чтобы вернуться в ту сцену, в которой был последний пользователь. Кроме того, у меня может быть 1 кнопка "назад", в которой есть метод возврата к последней сцене, а не какой-либо конкретный. Как бы я поступил так?
1 ответ
Изменить: Исходя из вашего примера кода, я предлагаю следующее, которое может работать не так, как написано из-за отсутствия у меня оборудования для тестирования: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 каким-либо указателем и позволить вашим слоям узнавать что-то о слоях, из которых они произошли.
Я надеюсь, что это работает как есть. Я прошел через это несколько раз и не вижу никаких очевидных ошибок...