2011-12-25 21 views
1

私はcocos2dを使用しています。私はccspriteframecacheとccspritebatchnodeをロードした後、私はccspriteを作った。しかし、私はスプライトstageのcontentsizeが必要です。Cocos2d contentSizeがスプライトのために動作しない

代わりに、画面全体のサイズである480.000000,320.000000を返します。私のイメージはかなり小さいです。

[[CCSpriteFrameCache sharedSpriteFrameCache]addSpriteFramesWithFile:@"nBack.plist"]; 
    CCSpriteBatchNode *spriteSheet = [CCSpriteBatchNode batchNodeWithFile:@"nBack.png"] 

CCSprite *stage = [CCSprite spriteWithSpriteFrameName:@"nBack0001.png"]; 

stage.position = ccp(winSize.width /2, winSize.height/2); 
CGSize stageSize = stage.contentSize; 
NSLog(@"%f,%f", stageSize.width, stageSize.height); 
[self addChild:stage z:1]; 

答えて

1

contentSizeは正しいです。画像の寸法を再確認することができます。

480x320の透明な背景にイメージを描いたとします。これにより、画像のサイズは480x320になりますが、テクスチャアトラスを作成するために使用されるツールは、(一時的に)余分な透明領域を取り除きます。しかし、それはまだiPhone上の画像のレンダリングに使用され、画像のcontentSizeに影響します。

+0

"真の"コンテンツサイズを取得する方法はありますか?手動ですべての画像を切り抜かなければなりませんか? – user1050548

+1

画像の作成方法によって異なります。空白の透明な画像(サイズ480x320)から始めて10x10ドットを描画すると、その画像のcontentSizeは480x320になります。ほとんどの描画プログラムには、イメージの未使用(透明)な境界をトリミングし、その機能を利用するオプションがあります。 – LearnCocos2D

0

boundingBoxを使用してcontentSizeを取得できると思います。あなたのケースで

CGSize stageSize = [stage boundingBox]; 

は、このうまくいけば、あなたが結果を希望しまいますが、あなたはスプライトをスケーリング場合は、それに応じてコンテンツのサイズを取得しますしてみてください。

として:

stage.scale = 0.5f; or stage.scale = 2.0f;` 

あなたが最初のケースでサイズが半分に縮小され、第二の場合にはサイズが二重であることがわかります。 boundingBoxは、再生中のノードの現在のコンテンツサイズを示します。

サイズを取得するのに役立つと思います。

ありがとうございました

+0

boundingBoxは内部的にcontentSizeを使用していますので、違いはありません – LearnCocos2D

+0

boundingBoxを使用すると、違いはありませんが、時には非常にうまくいくことがあります:)私のアプリの1つでは、でる。 – Haroon

関連する問題