經過一些頭痛之後,我發現使用CCSpriteBatchNode
與cocos2d olny可以將z-order sprite添加到它作爲孩子(這很明顯,現在我看到了..)在cocos2d上等軸測圖上z-sprite的最佳方法
[[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];
,因爲我必須把它們添加到顯示列表如下..
[_isoMap addChild:objectsSpriteSheet];
[_isoMap addChild:tokenSpriteSheet];
沒有辦法,我可以換其他的房子之間的單令牌的z順序...
它們將總是在h上呈現烏斯直到我改變這些批次節點的順序
順便說一句,我可以「合併」所有精靈藝術在一個大單批點......這樣就有可能使用精靈的座標訂購精靈
[fullSpriteSheet reorderChild:token z:token.position.y];
我有點卡住了......有沒有辦法實現這一點,有不同的精靈bacth節點?或者可以以編程方式合併兩個batchnodes? (或類似的東西)
我發現KnightFight,由LozArcher github上一個非常有趣的開放項目。他用CCSpriteFrame
和CCSprite
的setDisplayFrame
方法,而不是一批節點...但我不能運行它,因爲這似乎是cocos2d中的舊版本