Cocos2d iphone 从BatchNode更新CCTexture2D
完成测试后,我已将图像移到精灵表中 我用适当的文件加载了batchnode,我的图像加载得很好 但是我遇到了一个交换纹理的问题。当图像是单个文件时,没有问题。现在看来CCD不喜欢我的雪碧床单 我将对象存储在多维数组中,因此我可以快速浏览它们并更新它们的图像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
以下是我在工作时所做的:
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的矩形作为参数
享受