Как мне определить, на какой сцене пользователь был последним?

StackOverflow https://stackoverflow.com/questions/4670561

Вопрос

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

Я надеюсь, что это работает как есть.Я просматривал это несколько раз и не вижу никаких очевидных ошибок...

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top