Вопрос

Я только что закончил читать часть документации 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;

}

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

Это было полезно?

Решение

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

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

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

Другие советы

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

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

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

-- Дэвид

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

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

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

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

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

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

Удачи вам!

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top