Как определить, на какой сцене последний раз был пользователь? - PullRequest
0 голосов
/ 12 января 2011

Я использую cocos2d и хочу узнать, как я могу определить, на какой сцене последний раз был пользователь, прежде чем он / она нажали кнопку, чтобы перейти к моей сцене настроек из моей сцены pauseLayer.Мне нужно знать, потому что есть 2+ способа получить доступ к сцене настроек, поэтому мне понадобится специальная кнопка «Назад», чтобы вернуться в ту сцену, в которой был последний пользователь.Кроме того, у меня может быть 1 кнопка «Назад», в которой есть метод возврата к последней сцене, а не какой-либо конкретный.Как бы я поступил так?

1 Ответ

0 голосов
/ 12 января 2011

Редактировать: Исходя из вашего примера кода, я предлагаю следующее, которое может работать не совсем так, как написано из-за отсутствия у меня оборудования для тестирования: 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 каким-либо эталоном и позволить вашим слоям узнать кое-что о слоях, с которых они пришли.

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

...