Comment puis-je détecter quelle scène l'utilisateur dernière sur?
-
10-10-2019 - |
Question
J'utilise cocos2d, et je veux savoir comment je peux détecte quelle scène l'utilisateur dernière sur avant qu'il / elle a appuyé sur un bouton pour aller à ma scène des paramètres de ma scène pauseLayer. Je dois savoir parce qu'il ya 2+ façons d'accéder à la scène des paramètres, donc je besoin d'un bouton de retour spécial pour revenir à ce que l'utilisateur scène était à la dernière. De plus, je pourrais avoir 1 bouton arrière qui a une méthode pour revenir à la dernière scène, pas un spécifique. Comment dois-je prendre?
La solution
Edit: En fonction de votre exemple de code, ce que je propose, ce qui peut ne pas fonctionner exactement comme écrit en raison de mon manque d'équipement d'essai. P
Tout d'abord, ajoutez une méthode à votre classe appelée + Settings (id) nodeFromSource:. (Bool) bPauseMenu
+(id)nodeFromSource:(bool)bPauseMenu
{
if((self = [self node])
{
m_bPauseMenu = bPauseMenu;
}
return self;
}
Ajouter bool m_bPauseMenu; dans la définition de la classe.
Dans la fonction que vous attribuez à votre bouton de retour dans les paramètres, mettre en œuvre le code suivant:
//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]]];
}
}
Modifier l'appel pauseLayer - paramètres (void): (id) expéditeur à:
[[CCDirector sharedDirector] replaceScene:[CCTransitionFlipAngular transitionWithDuration:1.2f scene:[Settings nodeFromSource:true]]];
Et où votre autre appel pour afficher les paramètres des calques est, faire dire:
[[CCDirector sharedDirector] replaceScene:[CCTransitionFlipAngular transitionWithDuration:1.2f scene:[Settings nodeFromSource:false]]];
La raison pour laquelle je l'ai appelé nodeFromSource est si un jour vous pouvez remplacer le bool avec une sorte de référence et permettre à vos couches de connaître des choses sur les couches ils viennent.
J'espère que cela fonctionne en l'état. Je suis plus à quelques reprises et ne peut pas voir des erreurs évidentes ...