1

我试图弄清楚 Sprite 表是如何工作的。我在教程中找到了这段代码:

CCSpriteBatchNode *backgroundBgNode;
    backgroundBgNode = [CCSpriteBatchNode batchNodeWithFile:@"background.pvr.ccz"];
    [self addChild:backgroundBgNode];
    [[CCSpriteFrameCache sharedSpriteFrameCache] addSpriteFramesWithFile:@"background.plist"];
    CCSprite *background = [CCSprite spriteWithSpriteFrameName:@"MuleDeer-ipadhd.png"];
    background.anchorPoint = ccp(0,0);
    [backgroundBgNode addChild:background];

基本上这段代码很清楚,但假设我有多个精灵表(pvr.czz 文件)并且每个精灵表都有数百个不同的精灵。正如前面的代码所建议的,我应该将每个精灵作为一个孩子添加到他相应的 CCSpriteBatchNode 中。基本上问题是,如果所有精灵都不适合 1 个精灵表,我用来生成精灵表的工具几乎会随机地将精灵适合不同的精灵表。我所拥有的是所有文件(精灵)的列表,我不知道它们究竟属于哪个 spriteSheet。那么有没有办法从代码中获得正确的 CCSpriteBatchNode 我应该添加我的生成精灵?

4

1 回答 1

0

使用批处理节点的规则是您只能使用初始化批处理节点的纹理为一个精灵创建精灵。正如您所说,您的示例应该可以正常工作,但是如果我理解正确,您想知道使用更多精灵表时会发生什么?在这种情况下,您只需复制您已经完成的操作。

[[CCSpriteFrameCache sharedSpriteFrameCache] addSpriteFramesWithFile:@"myTexture1.plist"];
[[CCSpriteFrameCache sharedSpriteFrameCache] addSpriteFramesWithFile:@"myTexture2.plist"];

CCSpriteBatchNode *b = [CCSpriteBatchNode batchNodeWithFile:@"myTexture1.pvr.ccz"];
CCSpriteBatchNode *b1 = [CCSpriteBatchNode batchNodeWithFile:@"myTexture2.png"];

[self addChild:b];
[self addChild:b1];    

CCSprite *s = [CCSprite spriteWithSpriteFrameName:@"happySprite1.png"];
[b addChild:s];
CCSprite *s1 = [CCSprite spriteWithSpriteFrameName:@"happySprite2.png"];
[b addChild:s1];

CCSprite *s2 = [CCSprite spriteWithSpriteFrameName:@"slowSprite1.png"];
[b1 addChild:s2];
CCSprite *s3 = [CCSprite spriteWithSpriteFrameName:@"slowSprite2.png"];
[b1 addChild:s3];

这段代码更适合某些功能,但希望你明白吗?如果还不清楚,请告诉我。

于 2013-11-05T22:34:53.550 回答