gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-29 04:26:26 24 4
gpt4 key购买 nike

在我的 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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com