经过一些头痛之后,我发现使用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中的旧版本