ios - Cocos2D setDisplayFrame View 更改后不起作用?

标签 ios image cocos2d-iphone sprite

在我的 Cocos2D 应用程序中,我有一个包含所有游戏对象的 Sprite 表。在 CCLayer 类的 init 方法中我这样做:

[[CCSpriteFrameCache sharedSpriteFrameCache] addSpriteFramesWithFile:@"Objects.plist"];
objectsSheet = [CCSpriteBatchNode batchNodeWithFile:@"Objects.pvr.ccz"];
[self addChild:objectsSheet];

我像这样创建我的主角 Sprite :

mySprite = [[CCSprite spriteWithSpriteFrameName:@"MainImage.png"] retain];

而且加载效果很好。当角色死亡之前时,我会执行以下操作:

CCSpriteFrameCache* cache = [CCSpriteFrameCache sharedSpriteFrameCache];
CCSpriteFrame* frame = [cache spriteFrameByName:@"NewImage.png"];
[mySprite setDisplayFrame:frame];

这甚至效果很好。现在我离开 View ,稍后我返回游戏 View 。

所以现在我必须将角色图像更改回其原始图像,所以我这样做:

[mySprite setDisplayFrame:[[CCSpriteFrameCache sharedSpriteFrameCache] spriteFrameByName:@"MainImage.png"]];

但是发生了一些奇怪的事情,mySprite 只是空白,上面的最后一个代码肯定会被调用,但不会执行任何操作。奇怪的是,如果我将其加载到切换回游戏 View 后创建的新 Sprite 中,我会看到该图像。所以这与旧图像没有被记住或其他什么有关。

有谁知道为什么会发生这种情况或者我该如何解决这个问题?

谢谢!

最佳答案

返回游戏 View 后检查

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

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

关于ios - Cocos2D setDisplayFrame View 更改后不起作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12272724/

相关文章:

iOS 如何创建类似于 Twitter 心形按钮的动画按钮?

ios - 为 iOS 应用程序提交开放图操作?

python - 比较使用 ImageDataGenerator() 和 cv2.imread() 加载的数据

ios - 使用 Cocos2d-x 打开游戏中心 UI

iphone - 使用字典数组中的数据填充 Tapku 日历

cocos2d-iphone - 如何使 box2d 主体沿贝塞尔曲线/圆弧路径移动

ios - 无法将新应用添加到 iTunes-Myapp

ios - 开发移动原生 iOS 应用程序以与 SAP 中间件集成

node.js - Node : Uncaught TypeError: moduleClass is not a constructor

ruby-on-rails - rails : how to display image from upload