今回気付いたことは以下です。
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になっています。
なんか扱いづらいですね(笑)
間違いなどありましたらコメントしていただけると幸いです。
0 件のコメント:
コメントを投稿