2010-08-18 8 views
8

Hallo, Entschuldigung wenn das woanders beantwortet wird, aber ich konnte es nicht finden.Wie ändere ich die Z-Reihenfolge von Sprites in Objective-C?

Es ist ziemlich einfach, ich möchte die Z-Reihenfolge der Sprites, die ich in Objective-C, speziell in Cocos2D erstellen.

Dies ist der Fehler, den ich bekommen, wenn man versucht den folgenden Code zu bauen:

CCSprite *mySprite = [CCSprite spriteWithFile:@"Image.png" rect:CGRectMake(0, 0, 96, 24)]; 
mySprite.zOrder = 0; 

...220: error: object cannot be set - either readonly property or no setter found

Z-Order muss irgendwie eingestellt werden können - es kann nur auf der Linie eingestellt werden Instanziierung und nicht nachdem es erstellt wurde? Muss ich eine Setter-Methode für ein Attribut für CCSprite erstellen? Warum sollte es nicht schon diese Methoden haben?

Danke für Ihre Hilfe, -JJR

Antwort

5

es herausgefunden:

Wenn das Sprite selbst hinzufügen, um einen Parameter hinzufügen müssen:

CCSprite *mySprite = [CCSprite spriteWithFile:@"mySpriteImage.png" rect:CGRectMake(0, 0, 96, 24)]; 

[self addChild:mySprite z:1]; 

z = 0 Hintergrund ist, der höchste z-Index wird über den anderen Sprites liegen

-JJR

+3

Sie auch reorderChild Methode verwenden können, um ihre z um on the fly zu ändern – LearnCocos2D

40

@JJR - auf Ihre ursprüngliche Frage, wenn Sie nach dem Hinzufügen der Sprites neu anordnen müssen, wie GamingHorror arbeitet

[self reorderChild:sprite z:newZ]; 

Ihre Antwort verwendet gesagt, wenn alles, was Sie brauchen, um die ursprüngliche Reihenfolge

JCM gesetzt ist

1
_background.name = @"background"; 
[self addChild:_background]; 
_background.zPosition =-5; 

Überprüfung der z-Position im letzten Zeile aus, ich hoffe, dies wird Ihnen helfen