Cocos2d iphone 从BatchNode更新CCTexture2D

Cocos2d iphone 从BatchNode更新CCTexture2D,cocos2d-iphone,ccsprite,ccspritebatchnode,cctexturecache,Cocos2d Iphone,Ccsprite,Ccspritebatchnode,Cctexturecache,完成测试后,我已将图像移到精灵表中 我用适当的文件加载了batchnode,我的图像加载得很好 但是我遇到了一个交换纹理的问题。当图像是单个文件时,没有问题。现在看来CCD不喜欢我的雪碧床单 我将对象存储在多维数组中,因此我可以快速浏览它们并更新它们的图像 以下是我在工作时所做的: CCTexture2D* tex = [[CCTextureCache sharedTextureCache] addImage:@"alt-image.png"]; [((MyFunObject*)[[myFun

完成测试后,我已将图像移到精灵表中

我用适当的文件加载了batchnode,我的图像加载得很好

但是我遇到了一个交换纹理的问题。当图像是单个文件时,没有问题。现在看来CCD不喜欢我的雪碧床单

我将对象存储在多维数组中,因此我可以快速浏览它们并更新它们的图像


以下是我在工作时所做的:

CCTexture2D* tex = [[CCTextureCache sharedTextureCache] addImage:@"alt-image.png"];
[((MyFunObject*)[[myFunObject2DArr objectAtIndex:j]objectAtIndex:i])->img setTexture: tex];

以下是我现在正在做的事情:

CCTexture2D* tex = [[CCTextureCache sharedTextureCache] addImage:[CCSprite spriteWithSpriteFrameName:@"alt-image.png"]];
[((MyFunObject*)[[myFunObject2DArr objectAtIndex:j]objectAtIndex:i])->img setTexture: tex];

MyFunObject
CCSprite
的子类,并具有设置的
CCSprite
img属性。我在数组中查找相似的对象,并用新图像替换它们的图像“alt image.png”

看起来很简单,但在雪碧床单之外,这一切都完美无缺

有人能告诉我我做错了什么吗


更新: 这是为将来遇到此问题的任何人提供的解决方案

CCTexture2D* tex = [[CCTextureCache sharedTextureCache] addImage:@"alt-image.png"];
[((MyFunObject*)[[myFunObject2DArr objectAtIndex:j]objectAtIndex:i])->img setTexture: tex];
当所讨论的纹理是spritesheet时,无法更改精灵的“纹理”。(拍了拍我的头) 您只能更改所查看的矩形

以下是您的操作方法:

[((MyFunObject*)[[myFunObject2DArr objectAtIndex:j]objectAtIndex:i])->img setTextureRect:[[CCSpriteFrameCache sharedSpriteFrameCache] spriteFrameByName: @"alt-image.png" ].rect];
请注意,我将
setTexture
更改为
setTextureRect
,然后调用SpriteFrame的矩形作为参数

享受