Я создал атлас со всеми изображениями, которые я буду использовать в классе. Если бы это был спрайт создан из образа, я хотел бы создать его какCocos2D 2.0 - изменение прямоугольника CCSprite/растяжка спрайта
mySprite = [CCSprite spriteWithFile:@"white.png" rect:frame];
«white.png» является 1x1 пикселем изображения, которое я растяжка, чтобы покрыть весь размер CCSprite, что определяется прямоугольником: кадр на этом API.
Но для того, чтобы оптимизировать ввод/вывод и память, я поставил white.png в атласе, и моя идея состояла в том, чтобы создать его, используя
mySprite = [CCSprite spriteWithSpriteFrameName:@"white.png"];
, но это создаст 1x1 пиксель спрайт. Итак, моя идея состояла в том, чтобы создать категорию расширить CCSprite с этими линиями
@implementation CCSprite (CCSprite_Resize)
-(void)resizeTo:(CGSize) theSize
{
CGFloat newWidth = theSize.width;
CGFloat newHeight = theSize.height;
float startWidth = self.contentSize.width;
float startHeight = self.contentSize.height;
float newScaleX = newWidth/startWidth;
float newScaleY = newHeight/startHeight;
self.scaleX = newScaleX;
self.scaleY = newScaleY;
}
, так что я мог бы сделать это
mySprite = [CCSprite spriteWithSpriteFrameName:@"white.png"];
[mySprite resizeTo:frame.size];
и тому 1x1 спрайт будет растягиваться, чтобы покрыть размер я хочу.
Проблема в том, что это не работает.
любые подсказки? Благодарю.
Спасибо, но в этом случае я должен сделать это с помощью CCSprite, потому что все это происходит из производного класса CCSprite, который должен быть спрайтом. Размер не равен нулю. – SpaceDog
и mySprite после инициализации с помощью spriteFrame не ноль? – Morion
нет, но спрайт все еще 1x1 пиксель. Это может быть ошибка? (не масштабирование спрайтов из кэша кадров?) – SpaceDog