完成测试后,我将图像移动到spritesheet上。
我用适当的文件加载了batchnode,我的图片加载得很好。
但我遇到了交换纹理的问题。当图像是单个文件时,没有问题。现在看来CCTexture2d不喜欢我的精灵表。
我将对象存储在一个多维数组中,因此我可以快速浏览它们并更新它们的图像。
以下是我工作时所做的事情:
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”替换它们的图像。
看起来很简单,但在精灵表之外,这完美无缺。
有人能告诉我我做错了吗?
答案 0 :(得分:0)
<强>更新: 这是解决这个问题的未来任何人的解决方案
你不能改变精灵&#39;纹理&#39;当有问题的纹理是spritesheet。 (在那一个上低头) 您只能更改已查看的矩形。
以下是您的操作方法:
[((MyFunObject*)[[myFunObject2DArr objectAtIndex:j]objectAtIndex:i])->img setTextureRect:[[CCSpriteFrameCache sharedSpriteFrameCache] spriteFrameByName: @"alt-image.png" ].rect];
注意我已将setTexture
更改为setTextureRect
,然后将SpriteFrame的矩形称为参数。
享受。