nach ein paar Kopfschmerzen ich herausgefunden, dass mit CCSpriteBatchNode
mit cocos2d Olny Sprites hinzugefügt Z-Auftrag als Kind hinzugefügt (was offensichtlich ist, jetzt sehe ich ..)Der beste Weg für z-Bestellung Sprites auf der isometrischen Karte mit cocos2d
[[CCSpriteFrameCache sharedSpriteFrameCache] addSpriteFramesWithFile:@"token_default.plist"];
CCSpriteBatchNode *tokenSpriteSheet = [CCSpriteBatchNode batchNodeWithFile:@"token_default.png"];
[[CCSpriteFrameCache sharedSpriteFrameCache] addSpriteFramesWithFile:@"objects_default.plist"];
CCSpriteBatchNode *objectsSpriteSheet = [CCSpriteBatchNode batchNodeWithFile:@"objects_default.png"];
CCSprite *token = [[[CCSprite alloc] initWithSpriteFrameName:@"token_SE.png"] autorelease];
[token setPosition:tokenSpawnPoint];
CCSprite *enemy = [[[CCSprite alloc] initWithSpriteFrameName:@"token_blak_SE.png"] autorelease];
[enemy setPosition:enemySpawnPoint];
CCSprite *houseA = [[[CCSprite alloc] initWithSpriteFrameName:@"house_small.png"] autorelease];
[houseA setPosition:[self randomHousePosition]];
CCSprite *houseB = [[[CCSprite alloc] initWithSpriteFrameName:@"house_big.png"] autorelease];
[houseB setPosition:[self randomHousePosition]];
[tokenSpriteSheet addChild:token];
[tokenSpriteSheet addChild:enemy];
[objectsSpriteSheet addChild:houseA];
[objectsSpriteSheet addChild:houseB];
und da ich sie in die Anzeigeliste hinzufügen wie folgt ..
[_isoMap addChild:objectsSpriteSheet];
[_isoMap addChild:tokenSpriteSheet];
gibt es keine Art, wie ich die z-Reihenfolge der einzelnen Token zwischen anderen Häusern ...
ändern sie werden immer über die h gerendert werden ouse, bis ich die Reihenfolge dieser Batch-Knoten ändern
btw, ich kann „merge“ alle Sprites' Kunst in einer großen Charge Knoten ... Dabei wurde es möglich, Sprites zu bestellen unter Verwendung von Koordinaten Sprites
[fullSpriteSheet reorderChild:token z:token.position.y];
Ich bin ein wenig mit ihm fest ... gibt es eine Möglichkeit, das zu erreichen, mit verschiedenen Sprite-Bacth-Knoten? oder ist es möglich, zwei batchnodes programmatisch zusammenzuführen? (Oder so ähnlich)
i gefunden KnightFight, ein wirklich interessantes offenes Projekt auf Github von LozArcher .. er verwendet CCSpriteFrame
und CCSprite
‚s setDisplayFrame
Methode anstelle von Batch-Knoten ... aber ich kann es nicht laufen seit es scheint eine ältere Version von cocos2d zu sein (anscheinend nicht mit Xcode 4 Arbeits)