Как изменить изображение в спрайте, сделанном из изображения textureAtlas, используя spriteWithSpriteFrameName - PullRequest
0 голосов
/ 22 февраля 2012

У меня есть приложение cocos2d для iOS с Box2D (и Kobold2D); у меня есть массив из 18 CCSprites в слое. Теперь они создаются с использованием spriteWithSpriteFrameName и textureAtlas (спасибо texturePacker). Когда я хочу обновить 18 спрайтов, я думаю, что могу либо а) изменить изображение (но я не знаю, как это сделать - я увидел ссылку на setDisplayFrame, но мне нужно получить изображение из пакетного узла / текстуры атлас, использующий spriteWithSPriteFrameName) или b) уничтожить спрайт, который я ранее создал и добавил в слой с помощью addChild, и создать новый, если он размещен (18 спрайтов, 16 раз в одной «игре»). С точки зрения использования ресурсов и производительности, какой метод является предпочтительным? Похоже, а), но опять же, не уверен, как это сделать.

спасибо

Ответы [ 2 ]

4 голосов
/ 22 февраля 2012

Вы можете добавить следующий код в качестве расширения для CCSprite:

-(void) setDisplayFrameNamed:(NSString*)name
{
    [self setDisplayFrame:[[CCSpriteFrameCache sharedSpriteFrameCache] spriteFrameByName:name]];
}

Если вы используете box2d, вы также можете использовать GBox2D , что подробно описано в MonkeyJumpУчебное пособие

0 голосов
/ 22 февраля 2012

Идеальное решение - вообще не переключать текстуры спрайта, если вы можете избежать этого.Вторым лучшим вариантом является изменение текстуры через Spriteframe (обратите внимание, что это исключает использование CCSpriteBatchNode).

Создание новых спрайтов, как правило, является операцией, которая оказывает наибольшее отрицательное влияние на производительность.

...