Ich versuche, eine Reihe von Sprites auf einer Ebene zu platzieren, aber da ich alle Sprites als Gruppe verschieben möchte, habe ich einen CocosNode erstellt, legen Sie es auf die gleiche Größe wie der Bildschirm und positionieren Sie es in der Mitte des Bildschirms, dann fügen Sie die Sprites zu diesem Knoten (LightNode), anstatt sie der Ebene hinzuzufügen.Cocos2d - mehrere Sprites auf Elternknoten nicht Schicht
Was ich sehe, ist, dass die Sprites nicht in der richtigen (gleichen?) Positionen im Vergleich zu wenn ich sie in einer Schicht und nicht in der LightNode platziert.
Ich habe ein Testprogramm erstellt, um das Problem mit der XCode Cocos2d-Anwendungsvorlage "Hello World" zu zeigen - Ich habe dann die -init() -Methode der HelloWorld-Klasse in HelloWorldScene.m mit diesem Code ersetzt.
-(id) init
{
if((self=[super init]))
{
// create my parent node that will contain all the related sprites
lightPane = [[CocosNode alloc] init];
CGSize paneSize = { 480, 320 };
[lightPane setContentSize:paneSize];
[lightPane setPosition:ccp(240, 160)];
// add pane to layer
[self addChild:lightPane z:0];
// add a series of sprites to demonstrate the problem
int y = 40;
int x;
for (x=30; x<300; x+=20)
{
Sprite *sp = [Sprite spriteWithFile:@"pause.png"];
[sp setPosition:ccp(x, y)];
NSLog(@"Next sprite at position (%d, %d)", x, y);
[lightPane addChild:sp z:1];
//[self addChild:sp z:1];
x+= 20;
}
}
return self;
}
Dieser Code verweist auf eine PNG-Datei „pause.png“ genannt - nehmen Sie einfach jede kleine Bild über 30x30 Pixel groß und legen Sie es in diesem Projekt um es auszuführen.
Was Sie sehen werden ist, dass die Sprites etwa auf halber Höhe des Bildschirms erscheinen, beginnend in der Mitte und auf der rechten Seite.
Wenn Sie die Zeile auskommentieren und das Sprite zu lightPane hinzufügen, die Zeile darunter entkommentieren und das Beispiel erneut ausführen, werden die Sprites (korrekt) an den Koordinaten angezeigt, die sie verwenden sollen.
Das hat offensichtlich etwas mit dem CocosNode zu tun, den ich als Elternteil für die Sprites benutze. Wer sieht was ich hier falsch mache ??
gut geformte Frage und gute Codebeispiel! +1 – nash