Обновление CCTexture2D из BatchNode

После того, как я закончил тестирование, я переместил свои изображения в таблицу спрайтов.

Я загрузил 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".

Кажется простым, но за пределами спрайт-листа это работало безупречно.

Может кто-нибудь сказать мне, что я делаю не так?


1 ответ

Решение

ОБНОВЛЕНИЕ: ЗДЕСЬ РЕШЕНИЕ ДЛЯ ЛЮБОГО В БУДУЩЕМ, КОТОРЫЙ ЭТО ПРОБЛЕМА

Вы не можете изменить текстуру спрайтов, если речь идет о спрайте. (Хлопнул меня по голове) Вы можете изменить только тот прямоугольник, который просматриваете.

Вот как вы это делаете:

[((MyFunObject*)[[myFunObject2DArr objectAtIndex:j]objectAtIndex:i])->img setTextureRect:[[CCSpriteFrameCache sharedSpriteFrameCache] spriteFrameByName: @"alt-image.png" ].rect];

Обратите внимание, что я изменился setTexture в setTextureRectЗатем я вызвал прямоугольник SpriteFrame в качестве аргумента.

Наслаждаться.

Другие вопросы по тегам