4

入力境界内に収まるように画像をスケーリングする CCSprite を作成するにはどうすればよいですか。つまり、幅 = 70、高さ = 50 で、ファイル内の画像を 70,50 にスケーリングする CCSprite が必要な場合です。目的の最終サイズと比較して、画像のサイズから倍率を計算する以外に、これを行う簡単な方法はありますか?

4

2 に答える 2

9

これは、@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
于 2010-11-18T12:16:25.847 に答える
3

もっと簡単な方法があるかどうかはわかりませんが、次のようなことをするだけです

            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 のカテゴリにドロップすれば、もう心配する必要はありません。

于 2010-11-10T00:29:06.437 に答える