Cocos2d добавить фоновое изображение в слой? - PullRequest
25 голосов
/ 23 декабря 2009

Я только что закончил читать некоторую документацию по cocos2d, и, насколько я понимаю, чтобы добавить фоновое изображение в слой, вы должны сделать что-то вроде:

Sprite * bg = [Sprite spriteWithFile:@"Background.png"];
[layer addChild:bg z:0];

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

@implementation IntroScene
- (id) init {
self = [super init];
if (self != nil) {
    Sprite * bg = [Sprite spriteWithFile:@"Background.png"];
    [bg setPosition:ccp(240, 160)];
    [self addChild:bg z:0];
    [self addChild:[MenuLayer node] z:1];
}
return self;

}

В чем разница между этими двумя параметрами и как лучше установить фон для слоя? Любая помощь будет принята с благодарностью.

Ответы [ 4 ]

25 голосов
/ 23 декабря 2009

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

Если это поможет, поиграйте со слоями в Photoshop или в программе редактирования графики. Слои в cocos2d работают аналогично.

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

8 голосов
/ 01 января 2010

Также слои управляют порядком рисования (сверх любого межслойного z-порядка).

Например, в geoSpark у меня есть фоновый слой, слой искры, слой пользовательского интерфейса и т. Д. (Упрощенно). Но это позволяет мне быть уверенным, что мой пользовательский интерфейс всегда выше любого игрового материала (слой искры) и всего, что выше фона.

Если ваша игра выполняет только аддитивный рендеринг, порядок прорисовки не имеет большого значения. :)

- Дэвид

4 голосов
/ 08 ноября 2012

сцена - это доска, слой - это страница ... новости пишутся на странице, но при желании вы можете написать на доске. Если вы хотите стереть все новое.

0 голосов
/ 18 декабря 2013

В cocos2d мы можем добавить любой узел на любом узле. Но это зависит от уровня иерархии.

Вы можете добавлять слои на сцены. Если вам нужно то же свойство или искать все слои, которые вы добавляете в CCScene, вы можете добавить их в CCScene (как во втором случае). но если вы хотите иметь разные функции на каждом слое, добавьте их в CCLayer.

CCLayer предназначен для группировки набора узлов / спрайтов для какой-либо цели. Например, вы можете добавить слой, включающий параметры после приостановки игры, или слой HUD для отображения вида сома всегда на экране вместе с некоторым слоем прокрутки (аналогично некоторым играм с платформой прокрутки).

Наконец, вы можете даже использовать CCNode в CCScene, слой в другом слое и даже CCNode в CCSprite. Но порядок рисования в графическом контексте в cocos2d отличается.

Надеюсь, вы получили разницу.

Удачи!

...