2010-11-15 12 views
2

Hello awesome dev community. J'ai cherché une réponse à ceci pendant des jours maintenant et juste ne peux pas sembler trouver un handle, ainsi décidé de poster Q moi-même.Cocos2d: Appel de la fonction d'un CCLayer dans un autre (parent?) CCLayer

J'ai un jeu qui a des menus pour choisir des articles. Les menus peuvent comporter 2 -> 30 éléments et plus, ils doivent donc défiler. Il existe également des menus de catégories qui, lorsqu'un élément est cliqué, affiche un nouveau menu avec les éléments de cette catégorie. J'ai pensé que le moyen le plus efficace de le faire est de créer tous les éléments nécessaires pour le menu sur un calque dédié. Le problème est que je n'ai aucune idée de comment appeler ma fonction addNewItems: itemsArray définie dans la scène de jeu principale, à partir de la CCLayer contenant le menu.

Ou, devrais-je simplement utiliser une couche? Un peu brouillon et difficile de déplacer plusieurs éléments ensemble.

Merci beaucoup pour toute aide - ou me diriger dans la direction d'un tutoriel clair ou des exemples de la façon de le faire, car je ne pouvais honnêtement pas trouver.

Voici un organigramme de ce que je cherche à créer.

Merci!

Hanaan

alt text

Répondre

5

a finalement obtenu une réponse David994A (forum de cocos2d)

La réponse est de passer la couche un pointeur à sa couche mère j'initialiser le CCLayer comme ceci:

- (id) initWithParent: (CCLayer *) parentLayer;

et l'appeler comme ceci:

ItemsMenuLayer * tempLayer = [[ItemsMenuLayer alloc] initWithParent: auto];

Puis, à l'intérieur du CClayer je peux appeler l'une des fonctions de la couche du parent, comme celui-ci:

[parentLayer functionName];

+1

Mais où les mettez-vous exactement? Pourriez-vous poster un exemple .h et .m? – VagueExplanation

+0

'functionName' devrait être une méthode statique, non? – fuzz

+0

Désolé pour la réponse tardive à cette ... Le initWithParent est la méthode init de la couche ItemsMenuLayer * tempLayer = [[ItemsMenuLayer alloc] initWithParent: self]; ligne crée un instant de la couche dans la scène. Dans l'une des méthodes de la couche, vous pouvez appeler une fonction du parent avec: [parentLayer nomFonction]; –