与Cocos2d Spritesheet不显示任何东西

我想写一个演示应用程序来学习如何更好地使用Cocos2d中的精灵表。 到目前为止,我已经准备好了精灵,工作表看起来不错,代码看起来不错,但是精灵没有显示出来!

我有骰子对象包含精灵,和一些function之前select一个随机的脸animation骰子到屏幕上。 这应该就像你在滚动它们一样。

我使用的操作顺序是:

  • 将sprite数据的plist添加到帧caching
  • 创build精灵表批处理节点
  • 初始化Dice对象,select一个随机的面,并将它们添加到精灵表(批处理节点)
  • 将精灵表(批处理节点)添加到游戏图层

这里是整个项目的链接。 随意刺伤它。

https://github.com/rnystrom/MartionDemo

这里是我上面描述的片段,以及Dice对象的作用:

// Add spritesheet to the sprite cache [[CCSpriteFrameCache sharedSpriteFrameCache] addSpriteFramesWithFile:@"spritesheet.plist"]; self.spriteSheet = [CCSpriteBatchNode batchNodeWithFile:@"spritesheet.png"]; for (int i = 0; i < kNumDice; ++i) { // Create Dice object // CODE BELOW HAPPENS HERE AT initRandom Dice* d = [[Dice alloc] initRandom]; // Add die to spritesheet [self.spriteSheet addChild:d.sprite]; // Add Dice object to the array of rollable dice [rollDiceArray addObject:d]; } // Add spritesheet to the game layer [self addChild:self.spriteSheet]; 

下面是骰子初始化过程中的一个总结(参见上面的initRandom):

 // ... Sets up stuff like the # of frames, picking a random side of the die, etc ... // Add each frame to the frames array for(int i = 1; i <= numberFrames; i++) { if (i < 10) { [frames addObject:[[CCSpriteFrameCache sharedSpriteFrameCache] spriteFrameByName:[NSString stringWithFormat:@"%@0%d.png", self.face, i]]]; }else{ [frames addObject:[[CCSpriteFrameCache sharedSpriteFrameCache] spriteFrameByName:[NSString stringWithFormat:@"%@%d.png", self.face, i]]]; } } // Animation object with 0.04 seconds between each frame (~30fps) CCAnimation *anim = [CCAnimation animationWithFrames:frames delay:0.04f]; // Update the sprite with the new frames self.sprite = [CCSprite spriteWithSpriteFrameName:[NSString stringWithFormat:@"%@01.png", self.face]]; // Animate the sprite [self.sprite runAction:[CCAnimate actionWithAnimation:anim restoreOriginalFrame:NO]];