Добавление детей в Cocos2d - PullRequest
       5

Добавление детей в Cocos2d

0 голосов
/ 17 марта 2012

В движке cocos2d есть метод для добавления объекта в качестве дочернего объекта другого.

Например, в этой строке кода в файле Game.m:

CCMenu *menu = [CCMenu menuWithItems:pauseButton, nil]; pauseButton.position = ccp(s.width/2 - pauseButton.contentSize.width/2, (-s.height/2) + pauseButton.contentSize.height/2); [self addChild:menu z:100];

Вы видите, что экземпляр меню CCMenu добавлен как дочерний элемент к объекту класса Game. Что это на самом деле делает? Это для памяти?

Ответы [ 2 ]

1 голос
/ 17 марта 2012

Какао и Qt также используют этот вид иерархии, где вы можете добавить одно представление как дочернее к другому представлению.Он не имеет ничего общего с использованием памяти, его главная цель - иметь четкий порядок ответственности (в Cocoa: цепочка респондента).

В пользовательских интерфейсах самые нижние представления получают первый шанс отреагировать на ввод пользователя,Если представление не реагирует на ввод пользователя, оно передает ответственность своему родителю.В Cocos2D это, однако, не используется, и он становится в основном системой для позиционирования узлов относительно друг друга и для группировки узлов так, чтобы они все рисовались на одном «глубинном слое».

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

1 голос
/ 17 марта 2012

Такая иерархическая система помогает систематизировать и ссылаться на ваши игровые компоненты.И отображать их.

Game.m - это ваша сцена, и она будет отображать ваши игровые элементы.Тем не менее, он понятия не имеет, что это за элементы.Таким образом, у сцены есть список дочерних элементов, и он будет «отображать» их (спрайты, кнопки, метки и т. Д.).Таким образом, вы добавляете дочерний элемент в сцену, чтобы сообщить сцене, что этот дочерний элемент должен отображаться, потому что это визуальный элемент.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...