2009-12-23 13 views
25

Właśnie skończyłem czytać niektóre z dokumentacją Cocos2d, i, o ile mi zrozumieć, aby dodać obraz tła do warstwy trzeba zrobić coś takiego:Cocos2d dodanie obrazu tła do warstwy?

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

Allthough miarę moich próbach idzie można po prostu bezpośrednio dodać sprite na scenie tak:

@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; 

}

Jaka jest różnica między tym 2 opcje, i jaki jest lepszy sposób, aby ustawić tło dla warstwy ?. Każda pomoc zostanie bardzo doceniona.

+0

Pamiętaj, że Sprite od tego czasu stał się CCSprite. Tak, pamiętaj o tym Danyal. –

Odpowiedz

25

Nie musisz mieć warstwy, ale są one przydatne. Pomyśl o warstwach jako sposobie grupowania duszków (zarówno wizualnie, jak i organizacyjnie). Możesz chcieć, aby twoje obrazy tła były zgrupowane jako warstwa, a wszyscy wrogowie w grze jako kolejna warstwa. Pozwala to na łatwiejsze radzenie sobie z każdym zestawem. na przykład Możesz usunąć określoną warstwę zamiast znajdować wszystkich wrogów i usuwać je.

Jeśli to pomaga, baw się warstwami w programie Photoshop lub programem do edycji grafiki. Warstwy w cocos2d działają podobnie.

Dla prostej sceny dodanie tła do warstwy lub sceny nie ma większego znaczenia. Ale to nie potrwa długo, zanim korzyści z kopnięć warstw w.

+0

Dziękuję, że wyjaśniłeś to dla mnie. –

8

Również warstwy kontrolować kolejność rysowania (powyżej i między warstwami z zamawiania).

Na przykład w GeoSparku mam warstwę tła, warstwę iskrzenia, warstwę interfejsu użytkownika itp. (Uproszczony). Ale to pozwala mi upewnić się, że moje elementy interfejsu użytkownika są zawsze powyżej jakichkolwiek elementów gry (warstwa iskrzenia) i wszystkiego, co jest ponad tłem.

Jeśli gra renderuje tylko dodatki, kolejność rysowania nie ma większego znaczenia. :)

- David

4

scena jest tablica, warstwa jest strona ... wiadomością jest napisał na stronie, ale jeśli chcesz, możesz napisać na tablicy. Jeśli chcesz usunąć wszystkie nowe.

0

W cocos2d możemy dodać dowolny węzeł na dowolnym węźle. Ale zależy to od poziomu hierarchii.

Możesz dodawać warstwy do scen. Jeśli chcesz mieć tę samą właściwość lub szukać wszystkich warstw dodawanych do CCScene, możesz dodać te w CCScene (jak w drugim przypadku). ale jeśli chcesz mieć inną funkcję na każdej warstwie, dodaj je do CCLayer.

CCLayer jest przeznaczony do grupowania zestawu węzłów/duszków do jakiegoś celu. Na przykład możesz dodać warstwę, która zawiera opcje po wstrzymaniu gry, lub warstwę HUD do wyświetlania som rodzaju zawsze na ekranie wraz z jakąś przewijaną warstwą (podobnie jak w niektórych przewijanych grach platformowych).

Wreszcie można nawet CCNode na CCScene, warstwa na innej warstwie, a nawet CCNode na CCSprite. Ale kolejność rysowania w kontekście graficznym w cocos2d różni się.

Mam nadzieję, że masz różnicę.

Powodzenia!

Powiązane problemy