如何检测用户最后一个场景?

时间:2011-01-12 15:32:25

标签: cocos2d-iphone back-button detect scene

我正在使用cocos2d,我想知道在按下按钮从我的pauseLayer场景进入我的设置场景之前,我可以检测用户最后一个场景。我需要知道,因为有两种方法可以访问“设置”场景,因此我需要一个特殊的后退按钮才能返回到用户最后的任何场景。此外,我可以有一个后退按钮,有一个方法可以回到最后一个场景,而不是任何特定的场景。我该怎么做呢?

1 个答案:

答案 0 :(得分:0)

编辑:根据您的代码示例,我建议以下内容,由于我缺少测试设备,可能无法正常编写:P。

首先,在Settings类中添加一个名为+(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)sender to:

[[CCDirector sharedDirector] replaceScene:[CCTransitionFlipAngular transitionWithDuration:1.2f scene:[Settings nodeFromSource:true]]]; 

无论你打算显示“设置”图层的其他任何地方,都要说:

[[CCDirector sharedDirector] replaceScene:[CCTransitionFlipAngular transitionWithDuration:1.2f scene:[Settings nodeFromSource:false]]]; 

我称之为nodeFromSource的原因是,有一天你可以用某种引用替换bool,让你的图层知道它们来自的层。

我希望这是按原样运作的。我已经过了几次,看不出任何明显的错误......