Как создать CCSprite для установки границ?

Как я могу создать CCSprite, который масштабирует изображение, чтобы оно соответствовало входным границам, то есть если я хочу, чтобы CCSprite имел ширину = 70 и высоту = 50 и масштабировал изображение в файле до 70,50. Есть ли простой способ сделать это, кроме как вычислить коэффициент масштабирования от размера изображения по сравнению с желаемым конечным размером?


person Joey    schedule 02.11.2010    source источник


Ответы (2)


Вот работающая реализация категории, основанная на ответе @Martin.

@implementation 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;

}

@end
person Michael Behan    schedule 18.11.2010

Не уверен, что есть более простой способ, но я бы сделал что-то вроде

            CGFloat myDesiredWidth=50;
        CGFloat myDesiredHeight=70;

        CGFloat startWidth=mySprite.size.width;
        CGFloat startHeight=mySprite.size.height;

        CGFloat scaleX=myDesiredWidth/startWidth;
        CGFloat scaleY=myDesiredHeight/startHeight;

        CGFloat finalScale=MIN(scaleX,scaleY);
        mySprite.scale=finalScale;

Добавьте это в категорию на CCSprite, и вам больше никогда не придется об этом беспокоиться.

person Martin    schedule 10.11.2010