在我的 Cocos2D 应用程序中,我有一个包含所有游戏对象的精灵表。在 CCLayer 类的 init 方法中,我这样做:
[[CCSpriteFrameCache sharedSpriteFrameCache] addSpriteFramesWithFile:@"Objects.plist"];
objectsSheet = [CCSpriteBatchNode batchNodeWithFile:@"Objects.pvr.ccz"];
[self addChild:objectsSheet];
我像这样创建我的主角精灵:
mySprite = [[CCSprite spriteWithSpriteFrameName:@"MainImage.png"] retain];
它加载良好。当角色在我离开视图之前死亡时,我会这样做:
CCSpriteFrameCache* cache = [CCSpriteFrameCache sharedSpriteFrameCache];
CCSpriteFrame* frame = [cache spriteFrameByName:@"NewImage.png"];
[mySprite setDisplayFrame:frame];
这甚至效果很好。现在我离开视图,然后我回到游戏视图。
所以现在我必须将角色图像改回其原始图像,所以我这样做:
[mySprite setDisplayFrame:[[CCSpriteFrameCache sharedSpriteFrameCache] spriteFrameByName:@"MainImage.png"]];
但是发生了一些奇怪的事情,mySprite 只是空白,上面的最后一个代码肯定会被调用但没有做任何事情。奇怪的是,如果我将它加载到在我切换回游戏视图后创建的新精灵中,我会看到图像。所以这与不记得旧图像或其他东西有关。
有谁知道为什么会发生这种情况或我该如何解决?
谢谢!