Cocos2D iPhone - это сэкономит память? - PullRequest
0 голосов
/ 07 февраля 2012

Когда вы создаете спрайт на кокосах, используя текстуру, вы выделяете память.

Что-то вроде:

CCTexture2D *textureProxy = [[CCTexture2D alloc] initWithImage:image];
CCSprite *proxy1 = [CCSprite spriteWithTexture:textureProxy];

Мой вопрос: предположим, я хочу использовать несколько спрайтов, использующих одну и ту же текстуру, и яdo

CCSprite *proxy1 = [CCSprite spriteWithTexture:textureProxy];
CCSprite *proxy2 = [CCSprite spriteWithTexture:textureProxy];
CCSprite *proxy3 = [CCSprite spriteWithTexture:textureProxy];
CCSprite *proxy4 = [CCSprite spriteWithTexture:textureProxy];
CCSprite *proxy5 = [CCSprite spriteWithTexture:textureProxy];

Буду ли я использовать в 5 раз больше памяти?(или, другими словами, будет ли дублироваться текстура для каждого прокси или спрайт - это просто «пустое поле», ссылающееся на исходную текстуру?

Если последним является ответ, то использование памяти для аналогичных спрайтовРазве это не так огромно, верно?

спасибо.

Ответы [ 2 ]

1 голос
/ 08 февраля 2012

В кокосах Различная память выделяется для текстуры и переменных.Поэтому, если вы продолжите создавать только переменные, используя одну и ту же текстуру, вы не добавите текстурную память несколько раз.А объекты CCSprite являются автоматически выпущенными объектами.

1 голос
/ 07 февраля 2012

Спрайты сохраняют только ссылки на textureProxy.Даже если вы создаете каждый спрайт с spriteWithFile:, имена файлов кэшируются в CCTextureCache.

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