2013年2月5日火曜日

【cocos2d】CCSpriteのサイズを取得するときに気をつけること

前回の記事でCCSpriteのサイズ取得について書きましたが、そのサイズ取得の際に気付いたことをメモで。

今回気付いたことは以下です。

CCSpriteのサイズを取得するときは、contentSizeまたはboundingBoxで取得しますが、そのサイズを取得したいCCSpriteが、CCSpriteクラスを継承した外部クラスから生成されている場合は、返る値(サイズの値)がすべて"0"になります。

これはバグではなくそういう仕様のようです。

Cocos2d bounding box remains zero - StackOverflow

調べてみます

CGSize winSize = [CCDirector sharedDirector].winSize;

// 普通にCCSpriteを作成
CCSprite *sprite = [CCSprite spriteWithFile:@"Icon.png"];
sprite.position = ccp(winSize.width/2, winSize.height/2);
[self addChild:sprite];

//contentSizeとboundingBoxでサイズ取得
CCLOG(@"contentSize x = %f , contentSize y = %f", sprite.contentSize.width, sprite.contentSize.height);
CCLOG(@"boundingBox x = %f , boundingBox y = %f", sprite.boundingBox.size.width, sprite.boundingBox.size.height);

// CCSpriteクラスを継承したOtherSpriteクラス
OtherSprite *otherSprite = [OtherSprite node];
otherSprite.position=ccp(winSize.width/2, winSize.height/2-200);
[self addChild:otherSprite];

//contentSizeとboundingBoxでサイズ取得
CCLOG(@"OtherSprite contentSize x = %f , OtherSprite contentSize y = %f", otherSprite.contentSize.width, otherSprite.contentSize.height);
CCLOG(@"OtherSprite boundingBox x = %f , OtherSprite boundingBox y = %f", otherSprite.boundingBox.size.width, otherSprite.boundingBox.size.height);


/*************************** ログ結果 *******************************
contentSize x = 57.000000 , contentSize y = 57.000000
boundingBox x = 57.000000 , boundingBox y = 57.000000

OtherSprite contentSize x = 0.000000 , OtherSprite contentSize y = 0.000000
OtherSprite boundingBox x = 0.000000 , OtherSprite boundingBox y = 0.000000
********************************************************************/


確かに返る値が0になっています。
なんか扱いづらいですね(笑)
間違いなどありましたらコメントしていただけると幸いです。

参考記事

Cocos2d bounding box remains zero - StackOverflow

0 件のコメント:

コメントを投稿