2009-12-23 5 views
25

Ho appena finito di leggere un po 'della documentazione cocos2d, e, per quanto ho capito per aggiungere un'immagine di sfondo in un livello devi fare qualcosa di simile:Cocos2d aggiunge un'immagine di sfondo a un livello?

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

Allthough quanto riguarda il mio test si va può solo aggiungere direttamente lo sprite alla scena in questo modo:

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

}

Qual è la differenza tra questo 2 opzioni, e qual è il modo migliore per impostare uno sfondo per un livello ?. Qualsiasi aiuto sarà molto apprezzato.

+0

Ricordare che Sprite è diventato CCSprite. Sì, tieni quel pensiero Danyal. –

risposta

25

Non è necessario disporre di un livello, ma sono a portata di mano. Pensa agli strati come a un modo di raggruppare gli sprite (sia visivamente che organizzativamente). Puoi volere che le tue immagini di sfondo raggruppate come un livello e tutti i nemici in un gioco come un altro livello. Questo ti consente di gestire ogni set in modo più pulito. per esempio. Puoi rimuovere un livello specifico invece di trovare tutti i nemici e rimuoverli.

Se aiuta, giocare con i livelli in Photoshop o un programma di editing grafico. I livelli di cocos2d funzionano in modo simile.

Per una scena semplice, aggiungere lo sfondo ad un livello o ad una scena non farà molta differenza. Ma non ci vuole molto prima che entrino in gioco i vantaggi della stratificazione.

+0

Grazie per avermi chiarito. –

8

Anche i livelli controllano l'ordine di disegno (al di sopra e al di sopra di qualsiasi ordine z inter-layer).

In geoSpark, ad esempio, ho un livello di sfondo, un livello di scintilla, un livello dell'interfaccia utente, ecc. (Semplificato). Ma questo mi permette di assicurarmi che la mia roba UI sia sempre al di sopra di qualsiasi roba di gioco (il livello spark) e tutto ciò che è sopra lo sfondo.

Se il tuo gioco esegue solo il rendering additivo, l'ordine di estrazione non sarà molto importante. :)

- David

4

scena è una lavagna, strato è una pagina ... notizia è scritto a pagina, ma, se si desidera è possibile scrivere sulla scheda. Se vuoi cancellare tutto nuovo.

0

In cocos2d è possibile aggiungere qualsiasi nodo su qualsiasi nodo. Ma dipende dal livello della gerarchia.

È possibile aggiungere livelli nelle scene. Se vuoi la stessa proprietà o cercare tutti i livelli che aggiungi su CCScene, puoi aggiungerli in CCScene (come nel tuo secondo caso). ma se vuoi avere una caratteristica diversa su ogni livello, aggiungili a CCLayer.

CCLayer è pensato per raggruppare un insieme di nodi/sprite per qualche scopo. Ad esempio, puoi aggiungere un livello che include opzioni dopo aver messo in pausa un gioco, o il livello HUD per la visualizzazione di qualche tipo sempre sullo schermo insieme a un livello di scorrimento (come in alcuni giochi con piattaforma a scorrimento).

Finalmente puoi anche CCNode su CCScene, un livello su un altro livello e persino un CCNode su un CCSprite. Ma l'ordine di disegno nel contesto grafico in cocos2d differisce.

Spero che tu abbia ottenuto la differenza.

Buona fortuna!

Problemi correlati