Domanda

sto usando cocos2d, e voglio sapere come posso rilevare quale scena l'utente è stato ultima prima di lui / lei preme un tasto per andare alla mia scena Impostazioni dalla mia scena pauseLayer. Ho bisogno di sapere perché non v'è 2+ modi per accedere alla scena Impostazioni, quindi avrei bisogno di un apposito pulsante indietro per tornare a qualunque scena l'utente era ultima a. Inoltre, ho potuto avere 1 pulsante indietro che ha un metodo per tornare all'ultima scena, senza alcuna specifica. Come potrei fare per fare questo?

È stato utile?

Soluzione

Edit: In base al codice di esempio, suggerisco il seguente, che potrebbe non funzionare esattamente come scritto a causa della mia mancanza di apparecchiature di prova:.

In primo luogo, aggiungere un metodo alla classe Impostazioni chiamata + (id) nodeFromSource:. (Bool) bPauseMenu

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

Aggiungi bool m_bPauseMenu; nella definizione della classe.

Nella funzione si assegna per il pulsante indietro in Impostazioni, implementare il seguente codice:

//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]]]; 
  }
}

Cambia la chiamata in pauseLayer - impostazioni (nulli): (id) mittente:

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

E ovunque l'altra chiamata per mostrare le impostazioni del layer è, ne fanno dire:

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

Il motivo per cui ho chiamato nodeFromSource è così che un giorno è possibile sostituire il bool con qualche tipo di riferimento e consentire i livelli di conoscere cose circa gli strati di provenienza.

Spero che questo funziona così com'è. Sono stato più di un paio di volte e non riesco a vedere gli eventuali errori evidenti ...

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top