2009-12-23 12 views
25

Ich habe gerade einige der cocos2d Dokumentation zu lesen, und soweit ich verstehe ein Hintergrundbild auf einer Ebene, die Sie so etwas wie zu tun haben, hinzuzufügen: SieCocos2d Hinzufügen eines Hintergrundbildes zu einer Ebene?

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

Allthough so weit meine Prüfung geht nur kann direkt hinzufügen, wie dies das Sprit in die Szene:

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

}

Was ist der Unterschied zwischen diesen zwei Optionen, und was ist der bessere Weg, um einen Hintergrund für eine Schicht zu setzen ?. Jede Hilfe wird sehr geschätzt.

+0

Denken Sie daran, dass Sprite inzwischen CCSprite geworden ist. Ja, ertrage diesen Gedanken Danyal. –

Antwort

25

Sie brauchen keine Schicht, aber sie sind praktisch. Stellen Sie sich die Ebenen als eine Möglichkeit vor, Sprites (visuell und organisatorisch) zu gruppieren. Vielleicht möchten Sie Ihre Hintergrundbilder als eine Ebene und alle Feinde in einem Spiel als eine andere Ebene gruppieren. Dies ermöglicht es Ihnen, mit jedem Satz sauberer umzugehen. z.B. Du kannst eine bestimmte Ebene entfernen, anstatt alle Gegner zu finden und sie zu entfernen.

Wenn es hilft, spielen Sie mit Ebenen in Photoshop oder einem Grafikbearbeitungsprogramm. Schichten in cocos2d funktionieren ähnlich.

Für eine einfache Szene macht das Hinzufügen des Hintergrunds zu einer Ebene oder zu einer Szene keinen großen Unterschied. Aber es dauert nicht lange, bis die Vorteile der Schichtung in Kraft treten.

+0

Danke, das hat es für mich geklärt. –

8

Auch Schichten Kontrolle Zeichnung Reihenfolge (über jede Zwischenschicht z Bestellung).

Im GeoSpark habe ich zum Beispiel eine Hintergrundschicht, eine Funkenschicht, eine UI-Schicht usw. (vereinfacht). Aber das erlaubt mir sicherzustellen, dass mein UI-Material immer über jedem Spielmaterial (der Funkenschicht) und allem, was über dem Hintergrund liegt, steht.

Wenn dein Spiel nur additives Rendering macht, spielt die Reihenfolge der Züge keine Rolle. :)

- David

4

Szene eine Tafel ist, die Schicht ist eine Seite ... Nachrichten auf Seite geschrieben, aber wenn Sie möchten, dass Sie auf dem Brett schreiben. Wenn Sie alle neuen löschen möchten.

0

In cocos2d können wir jeden Knoten auf einem beliebigen Knoten hinzufügen. Aber es hängt von der Hierarchieebene ab.

Sie können Ebenen zu Szenen hinzufügen. Wenn Sie dieselbe Eigenschaft wünschen oder nach allen Ebenen suchen möchten, die Sie in einem CCScene hinzufügen, können Sie diese in CCScene hinzufügen (wie im zweiten Fall). Wenn Sie jedoch auf jeder Ebene eine andere Funktion haben möchten, fügen Sie CCLayer diese hinzu.

CCLayer ist für die Gruppierung einer Reihe von Knoten/Sprites für bestimmte Zwecke gedacht. Zum Beispiel können Sie eine Ebene hinzufügen, die Optionen nach dem Pausieren eines Spiels oder HUD-Ebene für die Anzeige von etwas Art immer auf dem Bildschirm zusammen mit einigen Scrolling-Layer (vergleichbar in einigen Scrolling-Plattform-Spiele).

Schließlich können Sie sogar CCNode auf einem CCScene, eine Ebene auf einer anderen Ebene und sogar eine CCNode auf einer CCSprite. Aber die Reihenfolge der Zeichnung im Grafikkontext in cocos2d unterscheidet sich.

Ich hoffe, Sie haben den Unterschied.

Viel Glück!