0

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

4

1 回答 1

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)settings:(id)sender 中的调用更改为:

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

无论您显示设置层的其他调用是什么,都说:

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

我将其命名为 nodeFromSource 的原因是,有一天你可以用某种引用替换布尔值,并让你的层了解它们来自的层的信息。

我希望这能按原样工作。我已经检查了几次,看不到任何明显的错误...

于 2011-01-12T16:45:21.920 回答