我有一个使用[CCSprite spriteWithSpriteFrameName:@"plist_file_key_here.png"]
. 我已经将 plist 文件中的所有精灵添加到 CCSpriteFrameCache。我试过这样设置纹理:
CCSpriteFrame * frame = [[CCSpriteFrameCache sharedSpriteFrameCache] spriteFrameByName:name];
NSAssert(frame.texture!=nil, @"frame.texture can't equal nil"); //this works fine
[sprite setTexture:frame.texture]; //doesn't cause a white square to appear, just doesn't switch the image.
正如我在评论中所说,这不起作用。我认为这与 using[CCSprite spriteWithFile:]
和之间的区别[CCSprite spriteWithSpriteFrameName:]
有关,它依赖于从纹理图集加载到 CCSpriteFrameCache 中的精灵帧。当使用从纹理图集加载的精灵时,每个精灵的纹理等于精灵表的纹理。有什么办法可以解决这个问题,还是我必须删除并重新创建精灵?如果这是我唯一的选择,有没有办法从其父节点中删除 ccnode 但保留其子节点?