Как мне создать CCSprite для установки границ? - PullRequest
4 голосов
/ 02 ноября 2010

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

Ответы [ 2 ]

9 голосов
/ 18 ноября 2010

Вот реализация категории, которая работает, основываясь на ответе @ 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
3 голосов
/ 10 ноября 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, и вам больше не придется об этом беспокоиться

...