2012-09-29 1 views
1

J'ai un jeu dans Cocos2d avec une scène principale (scène de jeu) et un bouton pour aller à une scène "Configuration". Lorsque l'utilisateur clique sur le bouton Configuration dans la scène principale, j'utilise pushScene pour aller dans la scène "Configuration". La raison pour laquelle j'utilise pushScene est de permettre à l'utilisateur de reprendre le jeu là où il l'avait laissé.Est-ce que replaceScene remplace uniquement la scène actuelle ou remplace-t-elle toutes les scènes de Cocos2d?

Dans la scène "Configuration", il y a deux options: "Annuler" et "Ok". Si l'utilisateur clique sur "Annuler", j'utilise popScene et le jeu reprend là où il en restait. Si l'utilisateur clique sur "Ok", j'utilise replaceScene car je veux que le jeu commence au début avec la nouvelle configuration. Ainsi, lorsque l'utilisateur clique sur "Ok", je sais que la scène "Configuration" est remplacée par la nouvelle scène de jeu, mais l'ancienne scène de jeu est-elle également remplacée? Sinon, est-ce que je fais les choses correctement ou devrais-je implémenter un autre moyen de faire savoir à la scène du jeu si elle devrait reprendre ou redémarrer.

Je veux m'assurer que je ne fuit pas la mémoire en accumulant des scènes non remplacées.

Répondre

2

La méthode replaceScene fait ce qu'elle dit. Il remplace la scène actuelle. Si vous avez 10 scènes poussées l'une sur l'autre, cela remplacera la 10ème scène et toutes les scènes précédentes restent.

C'est l'une des raisons pour lesquelles je ne recommande pas d'utiliser pushScene. Il est trop facile d'oublier une situation où les scènes peuvent être poussées plus qu'elles ne sont écloses. L'autre raison est que popScene ne peut pas être animé d'une transition. Btw, vous pouvez facilement tester ce comportement si vous remplacez replaceScene après pushScene, puis popScene dans la scène nouvellement remplacée. Vous verrez la vieille scène surgir. Normalement, si vous popScene avec juste une seule scène dans la pile, il va lancer une assertion.

+0

Merci. Dans ce cas, je vais essayer de créer cette fonctionnalité sans utiliser pushScene car je veux l'animer avec une transition. Avez-vous des suggestions sur la façon de reprendre le jeu ou de redémarrer en fonction de ce que fait l'utilisateur? – Andres

Questions connexes