Cocos2d добавя фоново изображение към слой?

Току-що приключих с четенето на част от документацията на 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;

}

Каква е разликата между тези 2 опции и кой е по-добрият начин за задаване на фон за слой?. Всяка помощ ще бъде високо оценена.


person Oscar Gomez    schedule 23.12.2009    source източник
comment
Имайте предвид, че Sprite оттогава стана CCSprite. Да, имайте това предвид, Данял.   -  person Danyal Aytekin    schedule 26.10.2011


Отговори (4)


Не е необходимо да имате слой, но те са удобни. Мислете за слоевете като начин за групиране на спрайтове (както визуално, така и организационно). Може да искате вашите фонови изображения да бъдат групирани като слой, а всички врагове в играта като друг слой. Това ви позволява да се справяте с всеки комплект по-чисто. напр. Можете да премахнете определен слой, вместо да намерите всички врагове и да ги премахнете.

Ако помага, поиграйте си със слоеве във Photoshop или програма за редактиране на графики. Слоевете в cocos2d работят по подобен начин.

За проста сцена добавянето на фон към слой или към сцена няма да има голяма разлика. Но не след дълго се появяват ползите от наслояването.

person Colin Gislason    schedule 23.12.2009

Също така слоевете контролират реда на чертане (над и над всяко z подреждане между слоевете).

В geoSpark, например, имам фонов слой, искров слой, UI слой и т.н. (опростен). Но това ми позволява да се уверя, че моите потребителски интерфейси винаги са над всички игрови неща (искровия слой) и всичко, което е над фона.

Ако играта ви прави само допълнително изобразяване, редът на теглене няма да има голямо значение. :)

-- Дейвид

person David Whatley    schedule 01.01.2010

сцената е черна дъска, слоят е страница... новините се пишат на страница, но ако искате можете да пишете и на дъската. Ако искате изтрийте всички нови.

person Thanh Vũ Trần    schedule 08.11.2012

В cocos2d можем да добавим всеки възел към всеки възел. Но зависи от нивото на йерархия.

Можете да добавяте слоеве върху сцени. Ако искате същото свойство или търсите всички слоеве, които добавяте към CCScene, можете да ги добавите в CCScene (както във втория случай). но ако искате да имате различна функция на всеки слой, добавете ги към CCLayer.

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

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

Надявам се, че разбрахте разликата.

Късмет!

person Kumar C    schedule 18.12.2013