2010-11-15 1 views
2

Привет, удивительное сообщество разработчиков. Я искал ответ на это в течение нескольких дней и просто не могу найти ручку, поэтому решил опубликовать Q сам.Cocos2d: функция вызова из одного CCLayer в другом (родитель??) CCLayer

У меня есть игра, в которой есть меню для выбора предметов. Меню могут содержать 2 -> 30 предметов, поэтому им нужно прокручивать. Существуют также меню категорий, которые при щелчке по элементу появляются новое меню с предметами этой категории.

Я понял, что наиболее эффективным способом для этого является создание всех элементов, необходимых для меню на выделенном слое. Проблема в том, что я понятия не имею, как вызвать функцию addNewItems: itemsArray, определенную в основной игровой сцене, из CCLayer, содержащего меню.

Или, должен ли я просто использовать один слой? Немного грязно и сложно перемещать несколько элементов вместе.

Благодарим вас за любую помощь - или указываете мне в сторону четкого руководства или примеров того, как это сделать, поскольку я честно не мог найти.

Ниже приведена блок-схема того, что я хочу создать.

Спасибо!

Hanaan

alt text

ответ

5

Наконец получил ответ от David994A (cocos2d форума)

Ответ должен пройти слой указатель на это родительский слой я инициализировать CCLayer так:

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

и назвать его так:

ItemsMenuLayer * tempLayer = [[ItemsMenuLayer Alloc] initWithParent: само];

Затем внутри CClayer я могу вызвать любого из функций слоя родителя, например:

[parentLayer FunctionName];

+1

Но куда вы их положите? Не могли бы вы разместить примеры .h и .m? – VagueExplanation

+0

'functionName' должен быть статическим методом, не так ли? – fuzz

+0

Извините за поздний ответ на этот вопрос ... initWithParent - это метод init слоя Элемент ItemsMenuLayer * tempLayer = [[ItemsMenuLayer alloc] initWithParent: self]; линия создает мгновение слоя в сцене. В любом из методов слоя вы можете вызвать функцию из родителя с помощью: [parentLayer functionName]; –