Come faccio a rilevare quale scena l'utente era ultima su?
-
10-10-2019 - |
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?
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 ...