Как добавить такой же спрайт в cocos2D? - PullRequest
2 голосов
/ 27 октября 2011

У меня есть спрайтовый "кирпич", который я хочу использовать много раз на фоне параллакса Есть ли способ, которым я могу использовать этот же спрайт? Потому что я должен установить обнаружение столкновений тоже для моего спрайта ... Если я использую слишком много переменных, я думаю, что это бесполезно. Спасибо за помощь

1 Ответ

9 голосов
/ 27 октября 2011

Вы не можете повторно использовать один и тот же экземпляр CCSprite. Однако вы можете повторно использовать текстуру, которую Cocos2D делает автоматически для вас.

Вы можете создать несколько спрайтов, используя один и тот же файл изображения или фрейм спрайта. Например, это создаст 100 кирпичных спрайтов и даст каждому уникальный тег от 0 до 99:

for (int i = 0; i < 100; i++)
{
   CCSprite* brick = [CCSprite spriteWithFile:@"brick.png"];
   [self addChild:brick z:0 tag:i];
}

Все спрайты, использующие файл изображения "brick.png", будут использовать одну и ту же текстуру в памяти. CCTextureCache кэширует каждый загруженный файл изображения, так что использование дополнительной памяти для каждого CCSprite близко к 500 байтам (я проверял это один раз во время выполнения Objective C). Это означает, что тысяча спрайтов, использующих одну и ту же текстуру, будет использовать около 500 КБ плюс объем памяти, используемый текстурой.

...