Cocos2d: вызов функции из одного CCLayer в другом (родительском?) CCLayer - PullRequest
2 голосов
/ 15 ноября 2010

Здравствуйте, отличное сообщество разработчиков. Я искал ответ на этот вопрос уже несколько дней и просто не могу найти ручку, поэтому решил опубликовать Q сам.

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

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

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

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

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

Спасибо !!

Hanaan

alt text

1 Ответ

5 голосов
/ 16 ноября 2010

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

Ответ - передать слой указатель на его родительский уровень. Я инициализирую CCLayer следующим образом:

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

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

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

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

[parentLayer functionName];

...