cocos2d - замена кэшированного спрайта - PullRequest
0 голосов
/ 22 февраля 2012

Я новичок в cocos2d.Я следовал учебному пособию, которое у меня получилось, но когда я обновлял изображение, которое использовал для стрельбы огненными шарами, удаляя и заменяя его из папки ресурсов, изображение больше не отображалось.Что я должен делать при замене изображения?

Прежде чем я поменял изображения:

CCSprite * projectile = [CCSprite spriteWithFile: @ "Projectile.png" rect: CGRectMake (0, 0, 20, 20)];

После замены изображения:

CCSprite * projectile = [CCSprite spriteWithFile: @ "Fireball.png" rect: CGRectMake (0, 0, 20, 20)];

Нужно ли каким-либо образом удалять кеш и повторно добавлять изображение?

РЕДАКТИРОВАТЬ:

Я добавилэта строка ниже моего кода, и это сработало:

[снаряд setTexture: [[CCTextureCache sharedTextureCache] addImage: @ "Fireball.png"]];

Странно, как янеобходимо добавить новую строку кода для замены изображения.

1 Ответ

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

Я нахожу, что иногда мне нужно очистить и собрать обновленную текстуру, чтобы, наконец, сделать это в комплекте приложения ... (Я подозреваю, что это происходит, когда я изменяю ресурс во время работы приложения, но, честно говоря, я тоже потерялмного времени с этим разбираюсь).Теперь я де-факто очищаю и собираю при смене ресурсов.

Я не уверен, что это обсуждение cocos2d, а скорее Xcode.Кэш текстуры cocos2d полностью создается в памяти во время выполнения вашего приложения.Это механизм, который 1) помогает уменьшить объем занимаемой памяти и 2) также повышает производительность, поскольку файл текстуры загружается только один раз, если вы не очищаете кэш.Xcode, с другой стороны, хранит копии всех ваших файлов в нескольких местах.«Очистив» сборку, вы гарантируете, что предыдущие версии файлов будут удалены, а все текущие ресурсы (включая текстуры) размещены в соответствующих местах для правильной работы среды разработки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...