视图更改后Cocos2D setDisplayFrame无法正常工作?

时间:2012-09-04 23:41:24

标签: ios image cocos2d-iphone sprite

在我的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只是空白,上面的最后一个代码肯定被调用但是没有做任何事情。奇怪的是,如果我将它加载到我切换回游戏视图后创建的新精灵中,我会看到图像。所以它与旧图像没有被记住或其他东西有关。

有谁知道为什么会这样或者我如何解决这个问题?

谢谢!

1 个答案:

答案 0 :(得分:1)

返回游戏视图后检查

[[CCSpriteFrameCache sharedSpriteFrameCache] spriteFrameByName:@"MainImage.png"]

不是nil。帧可以从spriteframe缓存中卸载