Cocos2d iphone 如何检测用户最后出现的场景?

Cocos2d iphone 如何检测用户最后出现的场景?,cocos2d-iphone,back-button,detect,scene,Cocos2d Iphone,Back Button,Detect,Scene,我正在使用cocos2d,我想知道如何在用户按下按钮从我的pauseLayer场景转到我的设置场景之前检测到他/她最后出现的场景。我需要知道,因为有2种以上的方式可以访问设置场景,所以我需要一个特殊的后退按钮来返回到用户最后出现的场景。另外,我可以有一个返回按钮,它有一个返回到最后一个场景的方法,而不是任何特定的方法。我该怎么做呢?编辑:根据您的代码示例,我建议如下,由于缺乏测试设备,可能无法完全按照编写的方式工作:p 首先,向设置类添加一个名为+(id)nodeFromSource:(bool

我正在使用cocos2d,我想知道如何在用户按下按钮从我的pauseLayer场景转到我的设置场景之前检测到他/她最后出现的场景。我需要知道,因为有2种以上的方式可以访问设置场景,所以我需要一个特殊的后退按钮来返回到用户最后出现的场景。另外,我可以有一个返回按钮,它有一个返回到最后一个场景的方法,而不是任何特定的方法。我该怎么做呢?

编辑:根据您的代码示例,我建议如下,由于缺乏测试设备,可能无法完全按照编写的方式工作: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,让你的图层了解它们来自的图层


我希望这一切照常进行。我已经检查了几次,没有发现任何明显的错误…

谢谢你的回答,但是我对你的代码有点困惑。在代码的第二部分中,我收到一条警告:“No'-initWithSource:“method found”。我知道我必须创建这个方法/参数,但是我该如何做呢?另外,您在pauseLayer中将cameFromPauseLayer设置为true,在Settings中设置为false是什么意思?在ReplaceSecene中,我是否应该将其置于设置中,以便“后退”按钮返回到pauseLayer?我也收到了警告“'pauseLayer'可能不响应'+sceneWithSource:'。”。很抱歉有这么多的问题,我只是不知道如何设置方法学,我没有带Mac做一个测试示例。您是否可以将pauseLayer类实现粘贴到此处,以便我可以向您展示我在应用程序上下文中的意思?编辑-我将在几分钟后将其上载并发布到此处感谢您的帮助:)