У меня есть CCSprite, который инициализируется с помощью [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.
Как я уже говорил в моих комментариях, это не работает.Я думаю, что это как-то связано с разницей между использованием [CCSprite spriteWithFile:]
и [CCSprite spriteWithSpriteFrameName:]
, которая опирается на спрайт-фреймы, загруженные в CCSpriteFrameCache из текстурного атласа.При использовании спрайтов, загруженных из текстурного атласа, текстура каждого спрайта равна текстуре листа спрайта.Есть ли способ обойти это или я должен удалить и воссоздать спрайт?Если это мой единственный вариант, есть ли способ удалить ccnode из его родителя, но сохранить его потомки?