2012-12-11 2 views
0

Débutant à iOS et Cocos2d (2.x)même CCMenu Ajout à plusieurs scènes

Ok Je veux créer un objet de menu et l'appeler de chaque nouvelle scène.

Exemple:

  • Scene1, ajouter le menu
  • Scene2, ajouter même menu que sur Scene1

Je n'ai vu comment initialiser le CCMenu lorsque vous initialiser le calque lui-même. vous construisez les éléments, puis les ajoutez au menu CCMenu et ainsi de suite.

Comment puis-je initialiser le CCMenu une fois, puis il suffit d'ajouter à ce que jamais je scène arrive à regarder? Donc, si je regarde Scene1 ou Scene2, c'est toujours le même menu.

Est-ce que cela a du sens?

Répondre

1

Vous aurez besoin d'une autre instance du menu pour chaque scène, donc techniquement parlant, vous aurez besoin d'initialiser une fois par scène.

Mais je pense que vous demandez « comment puis-je écrire le code une fois, puis réutiliser ce code dans chaque scène. » Vous voudrez créer une sorte d'objet CC que vous pouvez réutiliser. Cela pourrait être une sous-classe d'un CCMenu, CCLayer, ou tout ce qui convient le mieux. Donc, vous pouvez essayer quelque chose comme:

@interface MyMenuLayer : CCLayer { 
    CCMenu *myMenu; 
} 
@end 

Puis dans le fichier .m, configurez votre menu comme bon vous semble. Lorsque vous souhaitez l'inclure dans la scène 1:

MyMenuLayer *menu = [MyMenuLayer node]; 
[self addChild:menu]; 

Vous pouvez utiliser exactement le même code dans Scene2.

(vous pouvez simplement étendre CCMenu au lieu de CCLayer, mais personnellement, je préfère travailler avec des calques au lieu de menus. Il est une question de choix personnel.)

Il est difficile de donner une réponse définitive à l'information votre question, mais j'espère que cela vous met sur la bonne voie.

+0

Merci, je pense que ce que je demandais. Ainsi, lors de la création de l'objet CC comme CCLayer, je peux déclarer le menu puis il suffit d'inclure dans les coulisses, correct? Quel est l'avantage d'en faire un CCLayer? Je pense que je comprends pourquoi je veux juste confirmer. +1 et merci –

+0

Vous avez raison; il suffit de créer le menu à l'intérieur de votre objet personnalisé et inclure dans tout autre nœud que vous voulez (en utilisant addChild). L'avantage d'en faire un sous-CCLayer par rapport à CCMenu? Pas tant. C'est juste une question de préférence personnelle. Si vous vouliez ajouter quelque chose comme un titre à votre menu, il serait plus judicieux d'inclure dans un CCLayer que dans un CCMenu. (Je crois que cela fonctionnerait pour un CCMenu.) –

+0

Une autre note rapide: J'aurais dû préciser que vous cherchez à sous-classer une sorte de CCNode, pas un CCObject. Mais le CCMenu et CCLayer sont des exemples corrects. –

Questions connexes