0

私はcocos2dを使用していますが、ユーザーがボタンを押して、pauseLayerシーンから設定シーンに移動する前に、ユーザーが最後にどのシーンにいたかを検出する方法を知りたいです。設定シーンにアクセスする方法は2つ以上あるので、知っておく必要があります。そのため、ユーザーが最後に行ったシーンに戻るには、特別な戻るボタンが必要になります。また、特定のシーンではなく、最後のシーンに戻る方法を備えた1つの戻るボタンを使用することもできます。どうすればこれを行うことができますか?

4

1 に答える 1

0

編集:あなたのコードサンプルに基づいて、私は以下を提案します、それは私のテスト機器の不足のために書かれたように正確に動作しないかもしれません:P。

まず、+(id)nodeFromSource:(bool)bPauseMenuというメソッドをSettingsクラスに追加します。

+(id)nodeFromSource:(bool)bPauseMenu
{
  if((self = [self node])
  {
    m_bPauseMenu = bPauseMenu;
  }
  return self;
}

boolm_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 に答える