Layer vs Scene в Cocos2d для разработки игр для iPhone - PullRequest
5 голосов
/ 05 марта 2009

Используя cocos2d для разработки игр для iPhone, я запутался между Layer и Scene. Например, моя простая игра имеет несколько «страниц пользовательского интерфейса», таких как главное меню, рекорды, игровое поле и т. Д.

Так должен ли я использовать слой или сцену для каждой "страницы пользовательского интерфейса" и почему?

Ответы [ 3 ]

4 голосов
/ 11 апреля 2009

Просмотр SpritesDemo.m / .h может показаться, что они используют Layer, а затем создают новые сцены, присоединяют слой и затем заменяют сцену на режиссере

@interface SpriteDemo : Layer
@interface SpriteManual : SpriteDemo

Затем код выполняет следующие действия:

-(void)nextCallback:(id)sender {
  Scene *s = [Scene node];
  [s add: [nextAction() node]];
  [[Director sharedDirector] replaceScene s];
}

Итак, короче говоря, ответом на ваш вопрос будет «оба», вы используете Layer для представления вашей фактической «страницы пользовательского интерфейса», но вы присоединяете Layer к новой сцене и заменяете текущую сцену в директоре. 1007 *

2 голосов
/ 10 июня 2011

Это просто:

В этих примерах есть CCLayer и метод + scene, который создает новую сцену и прикрепляет к ней слой. Потому что слой не является «страницей пользовательского интерфейса», как вы его назвали. Сцена - это «Страница пользовательского интерфейса».

На обоих (сцена и слой) вы можете добавить больше слоев в качестве детей. Таким образом, вы можете сложить столько слоев, сколько захотите. На самом деле это хороший способ включить мультитач - создать слой для каждого из ваших объектов и включить касания на этих слоях. Итог, то, как они это сделали, это правильно, поэтому вы должны также работать со слоями и использовать метод + scene, чтобы прикрепить основной слой к сцене.

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

0 голосов
/ 26 мая 2009

Вам действительно не нужно использовать Layer, если вы не получаете какой-то сенсорный ввод (потому что это единственный класс в Cocos2D, который реализует TouchEventsDelegate). Демонстрации работают нормально, если вы помещаете их код прямо на сцену без Layer, так что, насколько я могу судить, они сделали это только для демонстрации других функций Cocos2D (добавление дочерних элементов, установка позиций и т. Д.).

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