2009-03-05 8 views
5

Utilizzando cocos2d per lo sviluppo di giochi per iPhone, sono confuso tra Layer e Scene. Ad esempio, il mio semplice gioco ha diverse "Pagine UI" come il menu principale, i punteggi più alti, la scheda di gioco ecc.Layer vs Scene in Cocos2d per lo sviluppo di giochi per iPhone

Quindi dovrei usare il livello o la scena per ogni "pagina dell'interfaccia utente" e perché?

risposta

4

Revisione SpritesDemo.m/.h, sembrerebbe che stanno utilizzando strato, e quindi la creazione di nuove scene, attaccare lo strato e poi sostituendo la scena sul regista

@interface SpriteDemo : Layer 
@interface SpriteManual : SpriteDemo 

Il codice esegue quindi la seguente:

-(void)nextCallback:(id)sender { 
    Scene *s = [Scene node]; 
    [s add: [nextAction() node]]; 
    [[Director sharedDirector] replaceScene s]; 
} 

Così, in breve, la risposta alla tua domanda sarebbe "entrambi", si utilizza layer per rappresentare il vostro vero e proprio "UI pagina", ma fissare il livello per una nuova scena e sostituire l'attuale scena nel regista.

+0

È quasi necessario sovrascrivere la funzione CCLayer anziché CCScene. In questo modo non è necessario sovrascrivere la funzione CCScene. – Emadpres

0

Non è davvero necessario utilizzare un livello a meno che non si ottenga un input tattile (perché è l'unica classe in Cocos2D che implementa TouchEventsDelegate). Le demo funzionano bene se inserisci il loro codice direttamente sulla scena senza il Layer, quindi per quanto posso dire lo hanno fatto solo per dimostrare altre funzionalità di Cocos2D (aggiungere bambini, impostare posizioni, ecc.).

2

E 'facile:

Hanno un CCLayer in questi esempi e un metodo scena + che fa una nuova scena e si attacca lo strato su di esso. Perché un livello non è una "UI Page" come lo hai chiamato. Una scena è una "Pagina UI".

Su entrambi (scena e livello) è possibile aggiungere più livelli come bambini. Così puoi impilare quanti più strati vuoi. Questo è in realtà un buon modo per abilitare il multitouch - creando un livello per ciascuno dei tuoi oggetti e abilitando tocchi su quei livelli. In conclusione, il modo in cui l'hanno fatto è giusto, quindi dovresti lavorare anche con i livelli e usare quel metodo + scena per collegare il livello principale alla scena.

Spero che questo aiuti. Ci scusiamo per il mio inglese. Non nativo